簡體   English   中英

.NET服務主機調用自己的服務

[英].NET Service Host Calling Its Own Service

我有自己托管在Windows服務中的多個WCF服務。 其中一個WCF服務需要調用在同一Windows服務中托管的另一個WCF服務。 這可能需要在同一台機器上或在另一台機器上安裝的相同Windows服務上運行。 我是否需要應用程序添加對自身的引用,或者是否有更簡單的方法來調用它自己的服務之一。 我知道如何通過更改端點地址來執行不同的機器位,但我不清楚是否應該添加對自身的引用。 即我是否需要使用我將從單獨的客戶端使用的相同代碼。

這里的概念稱為“位置透明度”。 也就是說,調用在同一進程或另一台機器上運行的(WCF)服務沒有(技術上)差異。

通常,這被認為是一件好事,因為您可以在部署之后/期間更改服務的位置,具體取決於您的需求(單個服務的穩定性或資源消耗)。

您可以通過配置命名管道綁定來優化您在同一台計算機上運行的事實 - 當然是否真正產生任何明顯的差異取決於您的服務操作運行多長時間,執行其實際任務(請參閱此處了解更多/選擇合適的綁定的好信息)。

最后,如果它真的很重要,你可以創建自己的綁定 ,可能利用兩個服務生命在同一個過程中的事實 - 很可能不是一個簡單的任務。

但是,無論如何,您希望確保實際的服務實現不依賴於正在使用的傳輸或綁定,因此要保持位置透明性。

如果您想訪問WCF服務,無論它是否在進程中托管,為它生成代理是一個好主意,也是一種訪問它的簡單方法。

但是,您可以使用ChannelFactory自行創建服務Channel 但如果可以,為什么不為它生成代理呢?

您可以使用new關鍵字創建服務的新實例(目標是服務的具體實現 - 當然不是接口)。 我一直這樣做,它工作正常。 此外,項目不能添加對自身的引用或者會在時空連續體中引起撕裂;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM