因此,根据我所看到的服务,自定义对象似乎是在编写服务以返回数据时的方法。如果我正在编写一个服务,用于1)填充数据库,或者2)为网站提供信息,是否有用于返回数据集/数据表而不是自定义对象列表的所有这些信息?
感谢
答案 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服务(在您的情况下,它们可能相关也可能不相关):
答案 5 :(得分:0)
尽管ORM很受欢迎,但我还是返回了数据集。返回自定义对象意味着您需要复制数据集类中已存在的功能。数据集在内存中表示基于表的数据方面表现非常出色。
答案 6 :(得分:0)
我对那些没有意识到拥有一个返回DataSet的Web服务是多么糟糕的决定的人数感到非常震惊。
DataSet是一种自定义.NET类型。 Web服务的重点在于可以通过任何平台上的任何语言调用它。
简单地说,如果Web服务返回DataSet,那么它就不是Web服务!