要在Web服务中返回数据集吗?

时间:2009-11-02 04:18:30

标签: .net web-services dataset

是否有关于从.NET Web服务返回(或 NOT 返回数据集)的最佳做法?一个阵营说我们应该提升互操作性并使用XML模式来定义Web服务有效负载,另一个阵营说我们应该返回数据集,因为它在Visual Studio中很简单,并且可以更快地完成工作。

反数据集阵营中的一些论点:

  • 数据集不符合WSI
  • 第三方软件似乎很少支持数据集

亲数据集阵营中的一些论点:

  • 它们非常方便,可以在Visual Studio中快速构建。
  • 我们(我的公司)只在.NET中开发,因此互操作性不是问题
  • 客户端的数据集具有易用性的优点

3 个答案:

答案 0 :(得分:3)

使用数据集?我会说一千次没有。它们不能与其他工具包互操作(如您所述)。当然,你现在唯一的消费者是.NET,但事情可以很快改变,做好准备是很好的。

请参阅The XML Files进行阅读。

此外,如果您正在开发新服务,请使用WCF编写它们。然后你可以随意暴露它们。如果服务和使用者是内部的并且都是.NET,那么您可以使用TCP绑定来获得更好的性能。然后,当其他人想要与您的服务进行通信时,您可以添加新的Web服务绑定,以便他们的Java应用程序(例如)可以与您的服务进行互操作。有关方便的流程图,请参阅Choosing the right WCF binding

答案 1 :(得分:1)

我会在营地里你不应该发送它,但这是一个决定,将根据对你公司重要的事情做出。

如果您设计的Web服务API基本上是公司与客户之间的合同。因此,公司中的某些人可能会开始将此API用于关键任务操作。

然后你得到一个让它在Blackberry上工作的请求。现在你必须改变web服务,这可能会破坏其他应用程序,从而导致连锁反应。

因此,如果您确定除了.NET之外您永远不需要支持其他平台,那么您可以选择第一个选项。

答案 2 :(得分:0)

我也不会选择数据集(就像这里的大部分社区一样)。就像James说的那样,你永远不会确定你的服务只会被.NET应用程序使用。 Web服务的主要原因是它是一种可供所有技术使用的标准,如果您创建它是正确的。

DataSet还打破了域驱动设计和层分离的想法,因此不像过去那样被吸引。 我只将它们用于需要快速和肮脏的演示;)

如果您真的想要一种“简单”的开发方式(在IDE中)并且仍然符合所有标准,请考虑使用WCF创建服务。