2012-09-17 50 views
3

在我的公司工作有3個團隊在不同的項目上工作,當涉及到這些項目之間的Web服務時,我有一個兩難的問題,應該是通過「添加服務參考」還是我們可以分享合同程序集並使用ChannelFactory調用它?任何推薦的解決方案或者是否還有其他更好的解決方案?WCF項目之間的「添加服務引用」或「共享合同組件」?

+0

可能重複的http:/ /stackoverflow.com/questions/1698275/wcf-channelfactory-vs-generating-proxy – Cybermaxs

回答

3

喜歡關於軟件開發的大多數問題,它取決於:)。

如果你的服務是保持你的核心/業務邏輯和客戶端被構建來爲服務製作UI,我沒有看到耦合客戶端和服務的問題,因爲客戶端的目的是耦合到某些服務。

如果不是這種情況,客戶有更廣泛的用途,並且消費服務只是我想象中的一小部分功能,考慮以下因素: - 在共享合同的情況下,您不必須在合同更改的情況下更改/重新生成客戶端,因爲它會自動傳播,因爲雙方都使用相同的類型。這還有一個好處,那就是,如果服務方面發生了某些變化(消息字段被移除/重命名),它將自動破壞客戶端的構建,並且通常可以更快地修復整個事件。否則你必須等待第一次調用(或系統測試)來通知該服務已被更改,並且某些內容不正確(使用添加服務引用方法也有辦法實現此目的)。

在某些情況下,您不希望新版本的服務合約影響客戶端代碼,並且希望客戶端獨立工作(構建)。在這種情況下,生成客戶端會是更好的方法。

基本上答案就在問題是客戶端和服務單獨開發或它們是同一個項目/應用程序的一部分。這

,是的,在這兩種情況下,你可以使用的ChannelFactory

2

我建議添加一個服務引用來生成客戶端代理,而不是作爲程序集共享合同。它提供了服務和客戶之間較弱的耦合。在這兩種情況下,您都可以使用ChannelFactory<T>來調用服務,只是在第一種情況下,T將由svcutil.exe生成,而在第二種情況下,它將來自共享程序集。

+0

我看到的問題是,它會爲合同生成多個文件,並且很多開發人員在更新服務引用時都會處理它,它會生成重複文件的副本... –

相關問題