我们可以将数据集传递给Web服务方法吗?如果是,那怎么办?
答案 0 :(得分:7)
IIRC,“是”(只有一个DataSet
参数),但也“你不应该”;虽然.NET可能知道如何处理它,但Web服务意味着可以基于xml实体进行互操作; DataSet
(即使在序列化为xml时)与您可以获得的距离相差甚远。 IMO最好编写一些代表您模型的基本类,并将那些公开给Web服务,因为它们可以在xsd中正确表示以用于SOAP。
答案 1 :(得分:2)
将DataSet传递给Web服务并不是一个好主意。而是使用DataSet的ReadXML或WriteXML方法将数据传递给webservice并在webservice端读取它。
编辑:如果可能的话,创建单独的类,如Marc Grawell所说,如果这对您来说不可行(这是一种罕见的情况),那么您可以使用上述方法传递数据,以获得比传递DataSet更好的方法直接
答案 2 :(得分:1)
Marc对数据集是正确的。这可能是您可以做的最糟糕的设计原则之一。 但是,您不应该像表示模型那样构建数据交换。您构造的SOAP消息应定义为消息。您不是通过线路发送对象而是SOAP消息。然后,您可以使用由该消息封装的一个对象模型,但不要将其作为对象本身发送。
基于工作消息可以让您更好地控制安全标题和错误等内容。