C# 与无.Net客户端共享wcf服务中的.Net类型

C# 与无.Net客户端共享wcf服务中的.Net类型,c#,wcf,C#,Wcf,我在WCF中开发了一个webservice,返回一个数据集 当我创建.Net测试应用程序来使用WCF时,我可以毫无问题地接收数据集,并将其分配给数据网格。Visual Studio为我完成了所有工作 但是当我的合作伙伴试图在C++中消耗WCF时,他告诉我他把数据处理成XML,并将其解析为字符串。 我想应该有更好的方法让他使用我的数据 但是因为我不熟悉C++,所以不知道它应该怎么工作。br> 我是否应该为我的数据集行创建一个类,并返回一个MyClass数组 另一方面,如果我想从他那里收到数据集 他

我在WCF中开发了一个
webservice
,返回一个
数据集

当我创建.Net测试应用程序来使用WCF时,我可以毫无问题地接收
数据集
,并将其分配给
数据网格
。Visual Studio为我完成了所有工作

<>但是当我的合作伙伴试图在C++中消耗WCF时,他告诉我他把数据处理成XML,并将其解析为字符串。 我想应该有更好的方法让他使用我的数据
但是因为我不熟悉C++,所以不知道它应该怎么工作。br> 我是否应该为我的
数据集
行创建一个类,并返回一个
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; }
}
并将数据集内容存储在适当的集合对象中。如果排序很重要,则转换为
队列
,否则
列表
通常是最佳方法。这两种类型都序列化为一个数组。您可以遍历数据集中的行,每行创建一个对象,然后将该对象放入新集合中


作为进一步的提示:为了提高性能,可以考虑完全删除数据集。如果您是从数据库中提取数据,最好是获取DataReader而不是DataSet,然后将DataReader的内容直接映射到新的对象类型和集合中。与直接读取数据库数据相比,数据集的计算成本较高。

考虑公开REST端点(通过WCF或WebAPI),而不是Web服务/SOAP端点。然后C++开发人员可以使用C++ REST SDK来构建他的客户端。


更多信息:

您应该尝试使用复杂类型返回数据使用a封装数据-这样可以保留web服务的互操作性功能。正如您和您的合作伙伴所发现的,使用内置的.NET数据类型将破坏这种互操作性。但是,我的合作伙伴如何在C++中反序列化和Serialize?你的合作伙伴应该从.NET生成的WSDL中生成序列化/反序列化代码。我有一个程序,它是用一个执行不好的数据集大量插入数据到数据库中的。我的分析器揭示了数据集,而不是CSV解析器,也不是数据库本身,是瓶颈。一旦你遵循了SufQua的建议,你就可以使用WSDL2H来构建C++头文件。当你使用WSDL2H并包含头文件时,你能在C++中从MyC类中创建对象吗?这听起来不错,但是因为我不使用C++,看起来像是局限于Windows?我的搭档在linux下工作。很抱歉,问题中没有包含这些信息。