我有一個wcf服務,可以在單個端點地址上公開大量的服務方法。到目前爲止,所有服務方法都是在一個服務合同類中實現的。這個服務契約類實現了幾個服務契約接口。現在我想將服務合同方法的實施分成幾個階段,以避免合同階層不斷增長。我使用ServiceHost的自託管方案。 ServiceHost只採用一種實現服務方法的單一類型,所以似乎所有的東西都必須在這個類中實現。當然,這些方法的肉可以分解成幾個類。但是,還有一種方法可以將方法拆分爲幾個類?WCF在單個端點地址處的大型接口
回答
您可以將該服務實施爲partial class,該服務可讓您將實施分割爲多個文件。
如果要求保持單個端點和單個接口,那麼就沒有其他方式將其分開 - 您創建的一個類必須實現所有接口。
我會建議保持服務實現儘可能簡單,並且每個方法都是一個單行代碼,將操作委託給實際實現,然後可以將其分解爲多個類。也許每個操作都做一個也是有道理的?這是我以前用過的成功模式。
您可以根據需要創建任意數量的服務合同,每個服務合約都有自己的邏輯。
這種方法的好處在於,您似乎希望將邏輯上相關的功能組合在一起。
不利的一面是調用客戶端現在必須知道調用函數時要使用哪個服務。
限制服務中操作的數量是一種很好的方法。正如我現在理解你的場景,你有單一的服務實現,它實現了幾個服務合同。這意味着您的服務中已經有多個端點 - 每個端點都暴露單一合同。在這種情況下,您的客戶已經準備好爲每個需要的合同創建單獨的代理。
現在你想在多個服務實現中劃分你的服務實現類。每個服務實施將實施一個(或更小的一組)服務合同。這將需要修改您的託管應用程序 - 每個服務實現您都需要單獨的ServiceHost。您還需要單獨配置和每個服務實施的唯一地址。
客戶端可以重新創建新的服務,但我認爲它也應該可以簡單地更改端點的地址,它應該工作。
謝謝您的回覆。我目前正在計劃和實施一個相當大的系統的數據交換接口。客戶很可能總是使用可能運行於不同平臺的整個界面。在這樣的情況下,我認爲客戶端只需要一個端點地址是最簡單的。我創建了幾個服務契約接口,讓一個「主接口」繼承自所有服務契約接口。然後servcice合同類實現主接口。 – WalterOesch 2010-09-10 21:32:53
- 1. WCF端點地址問題
- 2. 自動檢測端點地址連接 - WCF C#
- 3. 處理與單個終端接口
- 4. WCF:在客戶端,獲取端點IP地址
- 5. WCF端點地址,默認情況下仍然可以指定一個地址
- 6. 在運行時指定WCF端點的IP地址
- 7. 入口點地址
- 8. WCF客戶端配置:集中端點地址
- 9. 獲取不帶端口.net的地址,並將地址+端口構造到端點
- 10. WCF發現找到端點,但地址是本地主機
- 11. 如何獲取WCF服務的偵聽地址/端口?
- 12. 在運行時設置WCF端點地址?
- 13. 如何在使用wcf時使端點地址保持靜態
- 14. 無論使用何種綁定,WCF都會暴露在所有基地址上的WCF相對端點地址
- 15. 確定是否WCF的net.tcp端點地址是有效的
- 16. server.address()。端口正在使用nodejs中的隨機端口地址
- 17. WCF:修復使用externalMetadataLocation時的端點地址
- 18. 爲什麼你需要指定WCF服務的端點地址?
- 19. 自定義端點地址上的WCF服務404
- 20. 如何獲取WCF遠程端點的IP地址?
- 21. 自定義IIS主機中的WCF服務端點地址
- 22. WCF多個端點在IIS7
- 23. WCF多個端點
- 24. 端點地址問題
- 25. SoapUI更改端點地址
- 26. GCC入口點地址
- 27. WCF客戶端配置 - 基地址?
- 28. WCF端點允許哪些非HTTP地址?
- 29. 使用行爲動態更改WCF端點地址
- 30. WCF編程式併入服務端點地址
謝謝您的回覆。我也考慮過部分課程,但在我看來,部分課程並不能幫助簡化解決方案。我會按照您的建議去使用,每個操作使用一個班輪 – WalterOesch 2010-09-10 21:26:26