与无 .Net 客户端共享 wcf 服务中的 .Net 类型
本文关键字:Net 类型 服务 wcf 客户端 共享 与无 | 更新日期: 2023-09-27 18:32:39
我在 WCF 中开发了一个返回dataset
的webservice
。
当我创建 .Net 测试应用以使用 WCF 时,我可以接收dataset
并将其分配给datagrid
,没有任何问题。Visual Studio为我完成了所有的工作。
但是,当我的合作伙伴尝试在 c++ 中使用 WCF 时,他告诉我他将数据作为 XML 处理,并将分析作为字符串进行。
我想应该有更好的方法来使用我的数据。
但是因为我不熟悉 c++,所以不知道它应该如何工作。
我应该为我的Dataset
行创建一个类并返回一个MyClass
数组吗?
现在,另一方面,如果我想从他那里收到数据集?
他将如何创建 XML?
还是我应该接收一个 XML 字符串并在我这边进行分析?
编辑:以防万一c ++在Linux下。
数据集是一种 .Net 数据类型,在非 .Net 语言中没有特定的类似物。如果C++使用者使用的是 .Net,那么理论上数据集应该是可反序列化的。
对于 API,您通常希望使用可序列化为数组的简单自定义对象和集合类型。例如,如果您的数据集具有包含以下内容的架构
Column1 int
Column2 string
Column3 bool
然后,您可以创建一个自定义类来表示它:
public class YourObjectType
{
public int Column1 { get; set; }
public string Column2 { get; set; }
public bool Column3 { get; set; }
}
并将数据集内容存储在适当的集合对象中。如果排序很重要,则转换为Queue<YourObjectType>
,否则List<YourObjectType>
通常是最好的方法。这两种类型都序列化为数组。可以循环访问数据集中的行,以每行创建一个对象,然后将该对象放入新集合中。
作为进一步的提示:为了提高性能,请考虑完全摆脱数据集。如果要从数据库中提取,最好获取 DataReader 而不是 DataSet,然后将该 DataReader 的内容直接映射到新的对象类型和集合中。与直接读取数据库数据相比,数据集的计算成本很高。
考虑公开 REST 终结点(通过 WCF 或 WebAPI(,而不是 Web 服务/SOAP 终结点。然后,C++开发人员可以使用C++ REST SDK 来构建他的客户端。
http://msdn.microsoft.com/en-us/magazine/dn342869.aspx
更多信息: http://channel9.msdn.com/Events/GoingNative/2013/A-Cpp-REST-SDK-OSS-web-services-on-Windows-and-Linux