Web服务/ wcf服务,返回数据集是否更好?

时间:2009-07-27 13:38:06

标签: c# wcf web-services service

因此,根据我所看到的服务,自定义对象似乎是在编写服务以返回数据时的方法。如果我正在编写一个服务,用于1)填充数据库,或者2)为网站提供信息,是否有用于返回数据集/数据表而不是自定义对象列表的所有这些信息?

感谢

7 个答案:

答案 0 :(得分:6)

我认为,假设你“拥有”两端,通过网络发送DataSet的最大问题是DataSet带来的绝对“权重” - 它具有关系功能等,它远远超过传输数据。一个简单的对象集合应该更轻量级。

如果您没有“拥有”两端,或者可能有其他客户使用您的服务,那么DataSet就是互操作性的噩梦。

如果您不关心这些问题中的任何一个,并且您认为对象集合太多“工作”(例如,如果您只是将其转换回另一端的DataSet),那么这是你的电话。

here上有一篇很好的文章。

答案 1 :(得分:4)

我唯一一次通过WCF返回DataTable / DataSet是我无法事先知道架构的地方,或者它们根本没有任何好处。 99.99%的时间我会使用常规DTO课程,因为这样可以很好地融合性能,简单性(调试)和互操作性。

自从3.0 CTP以来我一直在使用WCF ...我通过WCF只使用了DataTable几次......我觉得它有点脏,但对于有问题的案例那里在艰难的过程中完全没有回报投资。

请注意,非.NET客户端使用它们会非常非常

答案 2 :(得分:2)

这样的问题难以解决,但一般情况下,您不希望从Web服务返回数据集。 Insead尝试返回业务对象。对于商务人士而言,像Order类这样的概念。这样做的原因是,通常您不希望将Web服务客户端与提供服务的应用程序的实现细节耦合。客户关心的是订单,而不是关于如何在数据库中构建这些订单的订单。这将产生紧密耦合,这与web服务的精神相反。其次,如果使用web服务的客户端不是.net客户端,那么他们最终会得到一个非常讨厌的XML来创建/解析,以便读取/写入在他们的平台上不是数据类型的数据集。

答案 3 :(得分:1)

自定义对象使您的客户更容易。 DataSet / DataTables让您更轻松。

我认为你应该根据自己的想法做出决定。

答案 4 :(得分:1)

由于以下原因,我不会将数据集用于Web服务(在您的情况下,它们可能相关也可能不相关):

  • 数据集是MS技术,如果要从Java客户端调用Web服务会发生什么?
  • 您无法控制客户端所做的更改。您只是返回一个持久保存到数据库的更改列表。
  • 数据集包含许多可能不需要的信息,从而导致性能问题。

答案 5 :(得分:0)

尽管ORM很受欢迎,但我还是返回了数据集。返回自定义对象意味着您需要复制数据集类中已存在的功能。数据集在内存中表示基于表的数据方面表现非常出色。

答案 6 :(得分:0)

我对那些没有意识到拥有一个返回DataSet的Web服务是多么糟糕的决定的人数感到非常震惊。

DataSet是一种自定义.NET类型。 Web服务的重点在于可以通过任何平台上的任何语言调用它。

简单地说,如果Web服务返回DataSet,那么它就不是Web服务!