当前位置:  开发笔记 > 编程语言 > 正文

WCF - 域对象和IExtensibleDataObject

如何解决《WCF-域对象和IExtensibleDataObject》经验,为你挑选了2个好方法。

典型情况.我们使用旧式XML Web Services internally在服务器场与多个分布式本地客户端之间进行通信.没有第三方参与,只有我们自己和客户使用的应用程序.

目前,我们正在琢磨从移动XML WS到一个WCF/object-based模型,并一直与各种方法的实验.其中之一涉及直接通过线路传输域对象/聚合,可能会调用它们上的DataContract属性.

通过使用IExtensibleDataObjectDataContract使用Order属性DataMembers,我们应该能够处理简单的属性版本控制问题(记住,我们控制所有客户端并且可以轻松地强制更新它们).

我一直听说我们应该DTOs通过线路使用专用的,仅传输数据传输对象().

为什么?还有理由这样做吗?我们在服务器端和客户端使用相同的域模型,当然,只有在被认为是正确且"必要"时才预先填充集合等.集合属性利用服务定位器原理和IoC调用NHibernate-based"服务"直接(在服务器端)获取数据,以及WCF客户端上的"服务"客户端与WCF服务器场通信.

那么 - 为什么我们需要使用DTOs



1> Ubiguchi..:

使用这两种方法(共享域对象和DTO)我会说共享域对象的大问题是当你不控制所有客户端时,但根据我过去的经验,我通常会使用DTO,除非它的开发速度是精华.

如果您有可能无法始终控制客户端,那么我肯定会推荐DTO,因为只要您与其他人的客户端应用程序共享您的域对象,您就会开始将您的内部内容绑定到其他人的开发周期.

我还发现DTO在版本化服务环境中工作时非常有用,这使我们能够从根本上改变应用程序的内部,但仍接受对旧版本服务接口的调用.

最后,如果您有许多客户端应用程序,那么使用DTO可能也是有益的,因为您可以通过易于版本化的服务进行保护.



2> akmad..:

根据我的经验,DTO对以下方面最有用:

    严格定义将通过线路发送的内容,并具有专门用于该定义的类型.

    隔离应用程序的其余部分,客户端和服务器,以防将来的更改.

    与非网络系统的互操作性.DTO当然不是必需品,但它们使设计"安全"类型更容易.

在您的场景中,这些设计功能可能并不重要.我已经将WCF与严格的DTO和共享域对象一起使用,并且在两种情况下它都运行良好.我通过网络发送域对象时唯一注意到的是我倾向于发送更多数据(并以意想不到的方式)然后我需要.这可能更多是由于我缺乏WCF经验而不是其他任何事情; 但是如果你选择走这条路,那你肯定应该警惕.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有