2012-07-19 78 views
1

我有一個作爲Windows服務運行的wcf自託管服務,爲本地網絡中的多個win/web客戶端提供服務。服務本身有多個合同(tcp &命名管道),其中一個應該通過IIS(任何形式的http綁定)提供,因此可以從外部訪問它,就像訪問www.mypublicdomain.com/public-contract一樣。 SVC通過IIS進行Wcf服務訪問和路由

當前拓撲:

  • Server應用程序 - WCF Windows服務
  • 客戶APP1 - 通過TCP/IP與服務器應用
  • 客戶端APP 2 - - 贏窗體應用程序的MVC Web應用程序(可在內部並通過互聯網,但通過公共領域) - 通過命名管道(同馬赫ine)
    • 這個應用程序託管在iis7上,新的公共wcf合同應該公開爲此的一部分。
  • 共享組件 - 包含接口(服務合同)

的問題是 - 什麼是暴露在通過IIS的Windows服務合同的最佳途徑之一,因此,所有的請求到公開可用的服務進行將直接路由到後端Windows服務。

我的第一個問題是stackoverflow,如果有什麼不清楚的地方,我會嘗試進一步解釋它。 謝謝。

回答

1

如果您使用的是IIS 7,那麼您可以在IIS中託管wcf服務,並使用HTTP綁定公開一個服務合同,並將另一個非公開服務合同作爲TCP-IP公開。

如果您必須將服務器應用程序作爲Windows服務託管,請創建一個新的IIS託管服務,該服務具有與您希望公開的服務契約相同的接口,但只需傳遞這些呼叫。

+0

有一個計劃,將服務應用程序和網絡應用程序分離到將來(近)不同的機器,讓服務在沒有iis的情況下單獨運行。這種方法到那時才奏效,但從一開始就認定最終的解決方案是完美的。 – Jeti 2012-07-19 14:24:28

+0

這就是爲什麼我提供了選項2 :) – BonyT 2012-07-19 14:26:41

+0

你剛剛添加了第二段,我認爲這是我以後的事情。你能詳細解釋一下「通過」部分嗎?我希望避免編寫實現所有方法來調用「真實」服務。有沒有辦法自動通過? – Jeti 2012-07-19 14:26:56