典型情况.我们使用旧式XML Web Services internally在服务器场与多个分布式和本地客户端之间进行通信.没有第三方参与,只有我们自己和客户使用的应用程序.
目前,我们正在琢磨从移动XML WS到一个WCF/object-based模型,并一直与各种方法的实验.其中之一涉及直接通过线路传输域对象/聚合,可能会调用它们上的DataContract属性.
通过使用IExtensibleDataObject和DataContract使用Order属性DataMembers,我们应该能够处理简单的属性版本控制问题(记住,我们控制所有客户端并且可以轻松地强制更新它们).
我一直听说我们应该DTOs通过线路使用专用的,仅传输数据传输对象().
为什么?还有理由这样做吗?我们在服务器端和客户端使用相同的域模型,当然,只有在被认为是正确且"必要"时才预先填充集合等.集合属性利用服务定位器原理和IoC调用NHibernate-based"服务"直接(在服务器端)获取数据,以及WCF客户端上的"服务"客户端与WCF服务器场通信.
那么 - 为什么我们需要使用DTOs?