典型情况下,我们在服务器群和多个分布式和本地客户端之间进行通信时,使用老式的XML Web Services。没有第三方涉及,只有我们和我们的客户使用的应用程序。
我们目前正在考虑从XML WS迁移到基于对象的WCF模型,并一直在尝试各种方法。其中一种方法涉及直接在线路上传输域对象/聚合,可能会在其上调用DataContract属性。
通过使用IExtensibleDataObject和使用DataMember上的Order属性的DataContract,我们应该能够处理简单的属性版本问题(记住,我们控制所有客户端,可以轻松强制更新它们)。
我经常听到我们应该在线路上使用专用的、仅用于传输的数据传输对象(DTOs)。
为什么?现在还需要这样做吗?当然,我们在服务器端和客户端使用相同的领域模型,在必要的时候预先填充集合等等。集合属性利用服务定位器原则和IoC来调用NHibernate-based“service”直接获取数据(在服务器端),并且客户端上的WCF“service”客户端用于与WCF服务器群交互。
所以-为什么我们需要使用DTO?
我们目前正在考虑从XML WS迁移到基于对象的WCF模型,并一直在尝试各种方法。其中一种方法涉及直接在线路上传输域对象/聚合,可能会在其上调用DataContract属性。
通过使用IExtensibleDataObject和使用DataMember上的Order属性的DataContract,我们应该能够处理简单的属性版本问题(记住,我们控制所有客户端,可以轻松强制更新它们)。
我经常听到我们应该在线路上使用专用的、仅用于传输的数据传输对象(DTOs)。
为什么?现在还需要这样做吗?当然,我们在服务器端和客户端使用相同的领域模型,在必要的时候预先填充集合等等。集合属性利用服务定位器原则和IoC来调用NHibernate-based“service”直接获取数据(在服务器端),并且客户端上的WCF“service”客户端用于与WCF服务器群交互。
所以-为什么我们需要使用DTO?