大型WCF服务的最佳做法?
写一个相当大的wcf服务的最佳做法是什么?包含大量的OperationContracts和DataContracts?
如何将function区域分成几个合同,最好是为每个function区域创build一个端点?
有什么办法可以保持不同部分的来源,但仍然只使用一个服务的所有这些?
我在哪里可以得到好的信息,如何计划合同,包括什么,如何分割……?
自成立以来,这是围绕着服务的一个大问题。 SOA的成功完成是在你所谈论的范围内进行SOA计划。 话虽如此,我一直更倾向于分裂服务,而是以复合的方式使用它们。 也就是说,当你有几个合同时,有几个端点,但是其中大部分只被非服务调用者使用的几个端点所消耗。 (哇,这是一口,甚至有道理?)
另外,我build议尽可能less的合同。 太多的合同可能会导致可pipe理性差。 良好的合同devise将有助于限制terminal和服务呼叫的数量。 从合同devise中去除面向对象的概念是这样做的一种方式。 契约devise本身就是一个巨大的话题,但通过良好的契约规划(预先),就足以说明良好的服务devise。
Maarten Mullender在WCFdevise方面写了一篇很棒的博客 ,而且是必读的。 也有一些很棒的SOA / WCF书籍也出现了。
一些好书:
- Pro WCF:实用的Microsoft SOA实现
- 编程WCF
我会在这里跟踪并说我已经使用了单一的WCF合同,function上分开的合同(在Juval的指导方针中,最多有10个方法),而且我也尝试过一个消息处理架构,一个采用基本消息的方法,以及处理器在消息传递过程中“知道”如何拆解和处理消息的处理程序。
如果你在围墙的两侧都有.NET,我是后者的忠实粉丝。 Oren对代码的想法进行了截屏。 我不知道你的需求是什么,但这是为我工作。
这就是说,如果你已经来自“我需要一个大的WCF服务”,那么去一种方法可能不会为你削减它。 如果这是真的,那么Juval Lowy的编程WCF服务是您在devise中应该遵循的标准。
这对我来说很有帮助,它来自idesign.net网站,由Juval Lowy撰写:
WCF编码标准
我在这里有一篇关于个别操作与传统代码操作不同的文章:
http://www.iserviceoriented.com/blog/post/Introduction+to+Service+Oriented+Architecture.aspx
您只能以实际业务事件的操作结束。 如果你停下来思考“我需要在我的Web服务上启用事务支持”,这意味着你没有devise足够宽的操作范围。 您不应该启用Web服务事务支持。
我强烈build议比尔·普尔的博客更高层次的SOA概念。 这是一个开始的post:
我知道这是一个旧的职位,但我正在考虑服务,就像我在编程中想到的对象一样。
保持他们的最低要求,他们必须做的。 当然不是走到极点,而是根据数据实体做出决定。
帐户一项,产品一项
不知道有谁会想到,虽然…