【发布时间】:2011-02-11 06:22:13
【问题描述】:
我们可以将数据集传递给 Web 服务方法吗?如果是,那怎么办?
【问题讨论】:
标签: c# asp.net web-services dataset
我们可以将数据集传递给 Web 服务方法吗?如果是,那怎么办?
【问题讨论】:
标签: c# asp.net web-services dataset
IIRC,“是”(只有一个 DataSet 参数),还有“你不应该”;虽然 .NET 可能知道如何处理它,但 Web 服务旨在基于 xml 实体进行互操作; DataSet(即使序列化为 xml)与您所能获得的距离差不多。 IMO 最好编写一些代表您的模型的基本类,并将 那些 暴露给 Web 服务,因为它们可以在 xsd 中正确表示以用于 SOAP 目的。
【讨论】:
DataSet。它不是解决此问题的正确工具,尤其是如果您需要通过服务边界。如果 android 应用程序是原生的:不,不是。如果是 Mono - 也许有一个外部机会。
将数据集传递给 Web 服务不是一个好主意。而是使用 DataSet 的 ReadXML 或 WriteXML 方法将数据传递给 webservice 并在 webservice 端读取。
编辑:如果可能,如 Marc Grawell 所说,创建单独的类,如果这对您不可行(这种情况很少见),那么您可以使用上述方法来传递数据,以获得比传递 DataSet 更好的方法直接。
【讨论】:
Marc 对数据集的看法是正确的。这可能是你能做的最糟糕的设计原则之一。 然而,你不应该以你代表你的模型的方式来构建你的数据契约。您构造的 SOAP 消息应该被定义为消息。您不是通过网络发送对象,而是 SOAP 消息。然后,您可以使用由该消息封装的对象模型之一,但不要将其作为对象本身发送。
基于工作消息允许您更好地控制安全标头和故障等内容。
【讨论】: