【发布时间】:2012-08-01 04:23:04
【问题描述】:
服务合同之一将巨大的DataSet 传递给客户端。我正在使用BufferedTranfer 模式。
在极少数情况下,我需要发送更多数据,因此我很困惑将 TransportMode 更改为 Streamed。
使用"DataSet" 通过NetTcpBinding 传输数据是一种好习惯吗?
DataSets 的任何替代品?
【问题讨论】:
-
不,这不是一个好习惯。
DataSet有大量开销,也需要序列化和传输——这不是你想要的。您应该改用业务对象和/或业务对象的集合(列表)。 -
DataSet(和 DataTable)很难使用——它们代表关系模型(行和列),在 .NET 应用程序中不能很好地工作。它们不提供任何类型安全性,它们不提供任何可通过智能感知发现的属性——您只需要知道它们的内部结构(存在哪些列、它们的含义以及它们保存的数据)。数据集非常混乱且使用起来不方便。尤其是在执行 WCF 时 - 停止使用 DataSet! - 改用 真实 .NET 对象 - 更易于使用、类型安全、可发现!
-
谢谢!好的...最好的替代选择是什么? List
或 .net 中的任何其他数据结构,如 Dictionary 或 ... ? -
是的,
List<Employee>会很好用。 -
数据集可以是强类型的——你可以提前定义它们。您甚至可以通过编程方式开发它们,直到结构适合您,然后将架构导出到您的项目中,然后可以在完全类型安全的版本中访问它。
标签: c# wcf memory-management dataset buffer