c# - 为什么从 WCF 服务返回数据集或数据表不是一个好的做法?什么是替代品?

标签 c# sql wcf datatable dataset

我正在研究大学管理系统,我在该系统上使用 WCF 服务,在该服务中我使用 DataTables 和 DataSets 从数据库获取数据,而数据库是 sql server。

我的问题是

  • 使用数据表和数据集是“好的做法”还是“坏的做法”?
  • 如果不好,DataTable/DataSet 的替代方案是什么?
  • 如果不好,主要原因是什么?

最佳答案

从 Web 服务返回数据集通常不被视为“良好做法”。这些问题已在以下链接中进行了详细记录:

http://msdn.microsoft.com/en-us/magazine/cc163751.aspx
https://web.archive.org/web/20210125131938/https://www.4guysfromrolla.com/articles/051805-1.aspx
http://msdn.microsoft.com/en-us/magazine/cc188755.aspx

总而言之,返回的最大问题 DataSet来自 Web 服务的对象似乎涉及序列化性能、非 .net 互操作性。此外,DataSet 的通用、多态性通常直到运行时数据结构都很高,因此,WSDL 定义不提供方法签名的完整描述。然而,与任何设计决策一样,您需要权衡成本与 yield ,并根据您的特定目标和限制确定最合适的方案。

就备选方案而言,您可以考虑使用通用集合(例如 List<yourClassHere>),或者甚至可以考虑进行一些架构修订以允许使用 ODATA。

以下链接为通过网络服务返回实体提供了一些很好的背景引用。 http://msdn.microsoft.com/en-us/library/orm-9780596520281-01-14.aspx http://www.codeproject.com/Articles/127395/Implementing-a-WCF-Service-with-Entity-Framework http://msdn.microsoft.com/en-us/data/hh237663.aspx

关于c# - 为什么从 WCF 服务返回数据集或数据表不是一个好的做法?什么是替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25874224/

相关文章:

带有 WCF Web 服务的 C# 传统服务器

c# - 从 LINQ to Entities 存储数据的最有效集合?

c# - TPL 数据流 TransformBlock 执行序列似乎无序/异步

c# - Java Annotations 和 C# Attributes 有什么异同?

c# - 即使我正在修改不同的集合,也会出现 "Collection was modified "错误

java - 无法获取更新查询以与 Hibernate 一起使用

SQL - 根据条件将某些列设置为空

MySQL Sum() 多列

wcf - Azure 队列存储与 WCF 服务

c# - 为什么使用wcf托管在另一个线程上时,为什么总是总是更改线程ID?