2008-10-24 124 views
39

寫一個相當大的wcf服務的最佳做法是什麼?包含大量的OperationContracts和DataContracts?大型WCF服務的最佳實踐?

如何將功能區域分成幾個合同,最好是爲每個功能區域創建一個端點?

是否有任何方法可以將不同部分的源保持分開,但仍然只對所有這些部分使用一種服務?

我在哪裏可以得到良好的信息如何計劃合同,包含什麼,如何分割......?

回答

16

自從成立以來,這是圍繞着服務的一個大問題。 SOA的成功完成是SOA計劃在你談論的範圍內。話雖如此,我一直更傾向於分裂服務,但以複合方式使用它們。也就是說,當你有幾個合同時,有幾個端點,但其中大多數只被非服務調用者使用的幾個端點消耗。 (哇,這是一口,它甚至有道理?)

此外,我建議儘可能少的合同。太多的合同可能會導致可管理性較差。良好的合同設計將有助於限制終端和服務呼叫的數量。從合同設計中刪除面向對象的概念是這樣做的一種方式。契約設計本身就是一個巨大的話題,但只要說通過良好的合同規劃(預先)就可以達到良好的服務設計。

Maarten Mullender writes a great blog關於WCF的設計,並且是必讀。還有一些很棒的SOA/WCF書籍也出現了。

一些好書:

+0

我同意多數認爲。並且絕對會將Maarten Mullender的博客添加到您的Feed中! – user9991 2008-10-24 13:55:01

+0

偉大的,謝謝 - 添加博客,現在通過存檔閱讀! – Sam 2008-10-24 13:58:43

5

這一直對我很有幫助,它來自idesign.net網站,它是由朱瓦爾·洛撰寫:

WCF Coding Standard

5

我會在這裏跟蹤並說我已經使用了單片WCF合約,功能上分開的合同(在他的書中Juval的指導方針中最多有10種方法),並且我還嘗試過一種消息處理架構,其中服務有一個方法需要一個基本消息,處理程序在線路穿過線路後「知道」如何拆開並處理消息。

我是後者的忠實粉絲,如果你在圍牆兩側都有.NET的話。 Oren對代碼的想法進行了屏幕錄像。我不知道你的需求是什麼,但這對我有用。

http://ayende.com/Blog/archive/2008/03/30/Hibernating-Rhinos-8--Going-Distributed-amp-Building-our-own.aspx

這就是說,如果你已經從未來的「我需要一個大的WCF服務」,然後將一個方法很可能不會削減它。如果這是真的,那麼Juval Lowy的編程WCF服務是您應該在設計中堅持的標準。

4

我這裏有一篇關於如何操作個人應該從傳統的代碼操作不同:

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

您應該結束了只爲實際的商業活動運作。如果你停下來思考「我需要在我的Web服務上啓用事務支持」,這意味着你沒有設計足夠寬的操作範圍。您絕不應該啓用Web服務事務支持。

我強烈建議比爾普爾的博客更高級別的SOA概念。這裏有一個帖子開始:

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

0

我知道這是一個老的文章,但我以同樣的方式思考服務的,因爲我在節目想的對象。

保持他們的最低要求,他們必須做的。當然不要走到極點,但我會根據數據實體做出決定。對於賬戶

一個服務,一個用於產品等

不知道什麼人會想到,雖然是... ...