2012-08-01 114 views
0

需要一些人可能採取的過去採取的最好的辦法,以解決以下問題...多個Windows服務使用相同的wcf與多個端點?

通過調用第三方COM的Windows服務託管WCF。 不幸的是,COM是STAThead,它在一個進程範圍內運行時只使用一個內核。

爲了解決這個問題,我想複製windows服務(我在安裝過程中使用不同的服務名稱很容易完成)創建另一個進程範圍,以便COM互操作將使用另一個核心。

問題:如何在不同地址下託管每個服務,以便客戶端可以調用他們想要使用WCF方法的服務?

如果我使用不同的端點並將每個窗口服務指向不同的端點,我會收到一條錯誤消息,指出每個基址只允許一個主機。

我可以爲同一協議添加多個基地址(不同的端口也許),並仍然將它們鏈接到不同的主機服務?

例子會很棒:)。

回答

0

這聽起來像你真的想有這個COM對象由WCF服務使用的多個實例。您可以啓動實例化並使用自己的COM對象的新線程(每個STA),以便您可以一次使用多個這些COM對象。當然,您必須將任何結果傳回WCF線程。

如果您想承載WCF服務的多個實例,這取決於您如何託管。在ii6中,您可以簡單地創建另一個.svc文件。這將以與該應用程序池中的所有其他服務相同的進程運行該服務。您可以通過爲其分配不同的應用程序池來使服務在不同的進程中運行。我不確定您是否可以在每個.svc的基礎上執行此操作。如果您使用的是IIS 7,則可以執行.svc或使用IIS7中的Windows進程激活服務(WAS)支持,在這種情況下,您基本上會在配置中創建另一個元素。我相信你可以在Windows Server 2008 R2中使用WAS,而不需要真正使用IIS ...

+0

試過了,但第三方軟件已經實現的方式仍然意味着只有一個線程被使用:(。 – Skyline 2012-08-01 16:02:51

+0

嘗試過,但已經第三方軟件已經實現的方式仍然意味着只有一個線程被使用:(他們還要求一個系統,你可以在不同的機器上有多個服務,所以內置的強大的resilence你已經給了我一個想法,儘管我可能會嘗試它有點不同,謝謝彼得。 – Skyline 2012-08-01 16:07:11

+0

要稍微改變問題傢伙 - 是否有可能在多個應用程序(Windows服務)上使用不同的端點或一些類似的想法控制相同的WCF? – Skyline 2012-08-02 09:19:23