【问题标题】:can we pass dataset to a web service method? If yes , then how?我们可以将数据集传递给 Web 服务方法吗?如果是,那怎么办?
【发布时间】:2011-02-11 06:22:13
【问题描述】:

我们可以将数据集传递给 Web 服务方法吗?如果是,那怎么办?

【问题讨论】:

    标签: c# asp.net web-services dataset


    【解决方案1】:

    IIRC,“是”(只有一个 DataSet 参数),还有“你不应该”;虽然 .NET 可能知道如何处理它,但 Web 服务旨在基于 xml 实体进行互操作; DataSet(即使序列化为 xml)与您所能获得的距离差不多。 IMO 最好编写一些代表您的模型的基本类,并将 那些 暴露给 Web 服务,因为它们可以在 xsd 中正确表示以用于 SOAP 目的。

    【讨论】:

    • +1 即使我发布了使用 ReadXML 和 WriteXML 方法的答案,但我仍然会选择使用单独的类来传递数据的答案。
    • @Marc Gravell:我如何将数据集从 android 传递到 soap 服务,有什么 setps 吗?
    • @HarshalKalavadiya 事情是这样的:停止使用DataSet。它不是解决此问题的正确工具,尤其是如果您需要通过服务边界。如果 android 应用程序是原生的:不,不是。如果是 Mono - 也许有一个外部机会。
    • @Marc Gravell:谢谢你的回答..请。请参阅此链接http://stackoverflow.com/questions/19198017/pass-arraylist-data-into-soap-web-service-in-android 我必须将数据数组传递给 SOAP 服务,那么我该如何传递呢?
    【解决方案2】:

    将数据集传递给 Web 服务不是一个好主意。而是使用 DataSet 的 ReadXML 或 WriteXML 方法将数据传递给 webservice 并在 webservice 端读取。

    编辑:如果可能,如 Marc Grawell 所说,创建单独的类,如果这对您不可行(这种情况很少见),那么您可以使用上述方法来传递数据,以获得比传递 DataSet 更好的方法直接。

    【讨论】:

      【解决方案3】:

      Marc 对数据集的看法是正确的。这可能是你能做的最糟糕的设计原则之一。 然而,你不应该以你代表你的模型的方式来构建你的数据契约。您构造的 SOAP 消息应该被定义为消息。您不是通过网络发送对象,而是 SOAP 消息。然后,您可以使用由该消息封装的对象模型之一,但不要将其作为对象本身发送。

      基于工作消息允许您更好地控制安全标头和故障等内容。

      http://msdn.microsoft.com/en-us/library/ms734675.aspx

      【讨论】:

      • 附注:以上主要与WCF有关; vanilla asp.net web-services 的工具等功能没有那么强大
      • 是的,这只能使用 WCF 等更强大的框架来完成。
      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 2020-10-27
      相关资源
      最近更新 更多