在我的公司工作有3個團隊在不同的項目上工作,當涉及到這些項目之間的Web服務時,我有一個兩難的問題,應該是通過「添加服務參考」還是我們可以分享合同程序集並使用ChannelFactory調用它?任何推薦的解決方案或者是否還有其他更好的解決方案?WCF項目之間的「添加服務引用」或「共享合同組件」?
回答
喜歡關於軟件開發的大多數問題,它取決於:)。
如果你的服務是保持你的核心/業務邏輯和客戶端被構建來爲服務製作UI,我沒有看到耦合客戶端和服務的問題,因爲客戶端的目的是耦合到某些服務。
如果不是這種情況,客戶有更廣泛的用途,並且消費服務只是我想象中的一小部分功能,考慮以下因素: - 在共享合同的情況下,您不必須在合同更改的情況下更改/重新生成客戶端,因爲它會自動傳播,因爲雙方都使用相同的類型。這還有一個好處,那就是,如果服務方面發生了某些變化(消息字段被移除/重命名),它將自動破壞客戶端的構建,並且通常可以更快地修復整個事件。否則你必須等待第一次調用(或系統測試)來通知該服務已被更改,並且某些內容不正確(使用添加服務引用方法也有辦法實現此目的)。
在某些情況下,您不希望新版本的服務合約影響客戶端代碼,並且希望客戶端獨立工作(構建)。在這種情況下,生成客戶端會是更好的方法。
基本上答案就在問題是客戶端和服務單獨開發或它們是同一個項目/應用程序的一部分。這
,是的,在這兩種情況下,你可以使用的ChannelFactory
我建議添加一個服務引用來生成客戶端代理,而不是作爲程序集共享合同。它提供了服務和客戶之間較弱的耦合。在這兩種情況下,您都可以使用ChannelFactory<T>
來調用服務,只是在第一種情況下,T
將由svcutil.exe
生成,而在第二種情況下,它將來自共享程序集。
我看到的問題是,它會爲合同生成多個文件,並且很多開發人員在更新服務引用時都會處理它,它會生成重複文件的副本... –
- 1. 在項目之間共享Web服務
- 2. 在WCF客戶端和服務之間共享合同
- 3. WCF服務之間的共享會話
- 4. 共享合同WCF數據服務
- 5. .NET C#Office共享添加在WCF服務引用異常
- 6. VS 2012「添加服務引用」對於一些共享組件
- 7. 在同一個項目中添加對WCF服務的服務引用
- 8. 在Xamarin的共享項目中添加項目引用
- 9. 組件之間的角度 - 共享服務不起作用
- 10. WCF服務引用之間的共享類型,仍然自動生成INotifyPropertyChanged
- 11. 在Silverlight應用程序之間共享WCF RIA服務庫
- 12. 在grails和griffon項目之間共享域和服務類
- 13. 在Universal Apps和ASP.NET 5.0之間共享項目(服務)
- 14. 使用服務在組件之間共享數據
- 15. 在項目之間共享用戶庫
- 16. 如何在服務堆棧中的項目之間共享服務?
- 17. 在不同的ASP.NET項目之間共享bin文件夾
- 18. 變量在不同項目之間共享的頭文件
- 19. 兩個WCF服務之間的共享類型
- 20. 多服務WCF之間的共享類型
- 21. 將WCF服務引用添加到多個項目
- 22. 角度共享兩個組件之間的服務實例
- 23. Angular4中兩個兄弟組件之間的共享服務
- 24. Angular 5:組件之間共享數據的服務(跨模塊)?
- 25. WCF:與客戶端的代理包裝共享服務合同
- 26. 共享客戶端和服務器的WCF合同
- 27. 添加WCF服務到ASP.NET MVC項目
- 28. 將WCF服務添加到項目
- 29. WCF服務共享類型
- 30. WCF服務共享存儲
可能重複的http:/ /stackoverflow.com/questions/1698275/wcf-channelfactory-vs-generating-proxy – Cybermaxs