编写一个包含大量OperationContracts和DataContracts的大型wcf服务的最佳实践是什么?
我如何将功能区域分成几个合同,最好是为每个功能区域创建一个端点?
有没有办法让不同部分的来源分开,但仍然只为所有部分使用一种服务?
我在哪里可以获得有关如何规划合同,包括哪些内容,如何拆分......的良好信息?
自成立以来,这一直是服务的一大问题.成功完成的SOA是SOA计划到您正在谈论的程度.话虽如此,我总是更倾向于分拆服务,但是以复合的方式使用它们.也就是说,当您有多个合同时,有几个端点,但大多数端点仅由非服务调用者使用的几个端点使用.(哇,这是一口,它甚至有意义吗?)
另外,我建议尽可能少签订合同.合同太多会导致可管理性差.良好的合同设计将有助于限制端点和服务呼叫的数量.从合同设计中删除OO概念是这样做的一种方式.合同设计本身就是一个巨大的话题,但只需通过良好的合同规划(预先),就可以获得良好的服务设计.
Maarten Mullender 写了一篇关于WCF设计的精彩博客,是必读的.还出现了一些很棒的SOA/WCF书籍.
一些好书:
Pro WCF:实用的Microsoft SOA实现
编程WCF
这对我来说很有帮助,它来自idesign.net网站,由Juval Lowy撰写:
WCF编码标准
我将离开这里,并说我已经使用了单片WCF合同,功能分离的合同(在他的书中沿着Juval的指导方针最多有十种方法),我还尝试了一种消息处理架构,其中一个服务有采用基本消息的单个方法,以及在通过网络后"知道"如何解包和处理消息的处理程序.
如果你在屏障的两边都有.NET,我就是后者的忠实粉丝.Oren用代码进行了关于这个想法的截屏视频.我不知道你的需求是什么,但这对我有用.
http://ayende.com/Blog/archive/2008/03/30/Hibernating-Rhinos-8--Going-Distributed-amp-Building-our-own.aspx
如果你已经来自"我需要一个大的WCF服务",那么去一个方法可能不会为你削减它.如果这是真的,那么Juval Lowy的编程WCF服务是您应该在设计中坚持的标准.