【发布时间】:2010-09-06 17:19:15
【问题描述】:
典型场景。我们使用老式 XML Web 服务 internally 在服务器群和多个分布式和本地客户端之间进行通信。不涉及第三方,只涉及我们自己和客户使用的应用程序。
我们目前正在考虑从 XML WS 转移到 WCF/object-based 模型,并且一直在尝试各种方法。其中之一涉及直接通过网络传输域对象/聚合,可能会在它们上调用 DataContract 属性。
通过使用IExtensibleDataObject 和使用DataMembers 上的Order 属性的DataContract,我们应该能够处理简单的属性版本控制问题(请记住,我们控制所有客户端并且可以轻松地强制更新它们)。
我一直听说我们应该通过网络使用专用的、仅传输的数据传输对象 (DTOs)。
为什么?还有理由这样做吗?我们在服务器端和客户端使用相同的域模型,当然,只有在认为正确和“必要”时才预填充集合等。集合属性利用服务定位器原理和 IoC 调用NHibernate-based“服务”直接获取数据(在服务器端),并在客户端调用WCF“服务”客户端与WCF 对话服务器场。
那么 - 为什么我们需要使用DTOs?
【问题讨论】:
标签: wcf serialization soap domain-driven-design soa