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