我在WCF中开发webservice
,返回dataset
。
当我创建我的.Net测试应用程序以使用WCF时,我可以收到dataset
并将其分配给datagrid
而没有任何问题。 Visual Studio为我完成了所有工作。
但是当我的合作伙伴试图在c ++中使用WCF时,他告诉我他将数据处理为XML并将解析作为字符串进行处理。
我猜他应该有更好的方式来消费我的数据。
但是因为我不熟悉c ++,所以不知道应该怎么做。
我应该为Dataset
行创建一个类,而是返回一个MyClass
数组吗?
现在,另一方面,如果我想收到他的数据集?
他将如何创建XML?
或者我应该接收XML字符串并在我这边进行解析吗?
编辑:以防c ++在Linux下。
答案 0 :(得分:2)
DataSet是一种.Net数据类型,在非.Net语言中没有特定的模拟类型。如果C ++使用者正在使用.Net,那么理论上DataSet应该是可反序列化的。
对于API,您通常希望使用可以序列化为数组的简单自定义对象和集合类型。例如,如果您的DataSet具有包含
的架构Column1 int
Column2 string
Column3 bool
然后执行,然后您可以创建一个自定义类来表示:
public class YourObjectType
{
public int Column1 { get; set; }
public string Column2 { get; set; }
public bool Column3 { get; set; }
}
将DataSet内容存储在适当的集合对象中。如果排序很重要,那么转换为Queue<YourObjectType>
,否则List<YourObjectType>
通常是最好的方法。这两种类型都序列化为一个数组。您可以遍历数据集中的行,以便每行创建一个对象,然后将该对象放在新集合中。
作为进一步的提示:为了提升性能,请考虑完全摆脱DataSet。如果从数据库中提取数据,最好是获取DataReader而不是DataSet,然后将该DataReader的内容直接映射到新的对象类型和集合中。与直接读取数据库数据相比,DataSet的计算成本更高。
答案 1 :(得分:0)
考虑公开REST端点(通过WCF或WebAPI)而不是Web服务/ SOAP端点。然后,您的C ++开发人员可以使用C ++ REST SDK来构建他的客户端。