【问题标题】:To return a dataset in a web service or not?是否在 Web 服务中返回数据集?
【发布时间】:2009-11-02 04:18:29
【问题描述】:
关于从 .NET Web 服务返回(或不返回数据集)是否有最佳实践?一个阵营说我们应该促进互操作性并使用 XML 模式来定义 Web 服务负载,另一个阵营说我们应该返回数据集,因为它在 Visual Studio 中很简单并且可以更快地完成工作。
反数据集阵营的一些争论:
- 数据集不符合 WSI
- 第三方软件似乎很少支持数据集
支持数据集阵营的一些论点:
- 在 Visual Studio 中构建它们非常方便快捷。
- 我们(我的公司)仅在 .NET 中开发,因此互操作性不是问题
- 客户端的数据集易于使用
【问题讨论】:
标签:
.net
web-services
dataset
【解决方案1】:
使用数据集?我会说一千次不。它们不能与其他工具包互操作(正如你提到的)。当然,您现在唯一的消费者是 .NET,但情况可能会迅速变化,做好准备是件好事。
请参阅The XML Files 了解一些信息。
此外,如果您正在开发新服务,请使用 WCF 编写它们。然后,您可以根据需要公开它们。如果服务和消费者是内部的并且都是 .NET,那么您可以使用 TCP 绑定以获得更好的性能。然后稍后当其他人想要与您的服务通信时,您可以添加一个新的 Web 服务绑定,以便他们的 Java 应用程序(例如)可以与您的服务互操作。有关方便的流程图,请参阅Choosing the right WCF binding。
【解决方案2】:
我认为你不应该发送它,但这是一个将根据对你的公司来说重要的事情做出的决定。
如果您设计的网络服务 API 基本上是公司与客户之间的合同。因此,公司中的一些人可能会开始将此 API 用于关键任务操作。
然后你会收到一个让它在黑莓上工作的请求。现在您必须更改 Web 服务,这可能会破坏其他应用程序,从而产生连锁反应。
因此,如果您确定永远不需要支持 .NET 以外的其他平台,那么您可以选择第一个选项。
【解决方案3】:
我也不会选择数据集(就像这里的大多数社区一样)。正如 James 所说,您永远无法确定您的服务将仅由 .NET 应用程序使用。 webservice 的主要原因是它是一个可以被所有技术使用的标准,如果你创建它是正确的。
DataSets 也打破了领域驱动设计和层分离的思想,因此不像一开始那样吸引人。
我只将它们用于需要快速和肮脏的演示;)
如果您确实想要一种“简单”的开发方式(在 IDE 中)并且仍然符合所有标准,请考虑使用 WCF 创建您的服务。