大型WCF服务的最佳实践?

时间:2008-10-24 13:40:53

标签: wcf

编写一个包含大量OperationContracts和DataContracts的大型wcf服务的最佳实践是什么?

我如何将功能区域分成几个合同,是否最好为每个功能区域创建一个端点?

有没有办法让不同部分的来源分开,但仍然只为所有部分使用一项服务?

我在哪里可以获得有关如何规划合同,包含哪些内容,如何拆分......的好信息?

5 个答案:

答案 0 :(得分:16)

自服务成立以来,这一直是一个很大的问题。成功完成的SOA是SOA计划到您正在谈论的程度。话虽如此,我总是更倾向于分拆服务,但是以复合的方式使用它们。也就是说,当您有多个合同时,有几个端点,但大多数端点仅由非服务调用者使用的几个端点使用。 (哇,这是一口,它甚至有意义吗?)

另外,我建议尽可能少签订合同。合同太多会导致可管理性差。良好的合同设计将有助于限制端点和服务呼叫的数量。从合同设计中删除OO概念是这样做的一种方式。合同设计本身就是一个很大的话题,但是通过良好的合同规划(预先),可以说是良好的服务设计。

Maarten Mullender writes a great blog关于WCF设计,是必读的。还出现了一些很棒的SOA / WCF书籍。

一些好书:

答案 1 :(得分:5)

这对我有帮助,它来自idesign.net网站,由Juval Lowy撰写:

WCF Coding Standard

答案 2 :(得分:5)

我将离开这里,并说我使用了单片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服务是您应该在设计中坚持的标准。

答案 3 :(得分:4)

我在这里有一篇关于个人操作应该如何与传统代码操作不同的帖子:

http://www.iserviceoriented.com/blog/post/Introduction+to+Service+Oriented+Architecture.aspx

您应该仅针对实际业务事件的操作结束。如果您曾停下来想“我需要在我的Web服务上启用事务支持”,这意味着您没有设计具有足够宽范围的操作。您永远不必启用Web服务事务支持。

我强烈建议Bill Poole的博客提供更高级别的SOA概念。这是一个开始的帖子:

http://feeds.feedburner.com/~r/BillPoolesCreativeAbrasion/~3/328955489/service-contract-stability.html

答案 4 :(得分:0)

我知道这是一个老帖子,但我正在考虑服务的方式与编程中的对象相同。

让他们尽可能地保持最低限度。当然不要走极端,但我正在根据数据实体做出决定。

一项服务用于帐户,一项用于产品等。

不确定有人会想到这一点......