2010-01-01 159 views
0

是否有可能在同一AppDomain上託管2個相同類型和合同的WCF服務?相同服務和合同類型的多個WCF服務

在下面的配置中,我配置了Service.SomeService類型的單個服務,該服務實現了合約ISomeService。我想要做的就是能夠託管2種這種類型的服務,當然還有不同的URI。

<system.serviceModel> 
<services>  
    <service name="Service.SomeService"> 
    <endpoint address="net.tcp://localhost:8000/SomeService" 
       binding="netTcpBinding" 
       contract="Service.ISomeService" /> 
    </service> 
</services>  

我也自我的窗口服務託管這些服務。

謝謝。

回答

1

是的,Windows服務可以託管多個WCF服務。然而,每個WCF服務必須具有唯一的地址。將端點添加到ServiceHost實例時,必須爲每個端點指定一個唯一地址,這意味着您必須改變至少一個方案(net.tcp,net.pipe,http等),域,端口或路徑。

0

所以基本上我應該能夠通過添加多個端點服務要做到這一點:

<services>  
    <service name="Service.SomeService"> 
    <endpoint address="net.tcp://localhost:8000/SomeService1" 
       binding="netTcpBinding" 
       contract="Service.ISomeService" /> 
    <endpoint address="net.tcp://localhost:8000/SomeService2" 
       binding="netTcpBinding" 
       contract="Service.ISomeService" /> 
    </service> 

我出現在配置文件中該服務類型和合同應該是唯一的。但是有可能改爲添加2個相同類型和合同的服務,而不是將2個端點添加到相同的服務中?

+1

請考慮改變你原來的問題,以增加更多的信息,而不是增加一個答案 - 除了通過有限評論人無法迴應的答案 – blowdart 2010-01-01 12:14:11

0

我出現在配置文件 在業務類型和 合同應該是唯一的。

爲什麼?他們不必是唯一的 - 沒有辦法。唯一需要注意的是服務端點的地址(完整的一個) - 當然,WCF如何知道在哪裏發送某些請求?

但有可能,而不是添加相同類型的2個 服務和合同 而不是增加2個端點到 相同的服務?

當然,沒問題:

<services>  
    <service name="Service.SomeService"> 
    <endpoint address="net.tcp://localhost:8000/SomeService1" 
       binding="netTcpBinding" 
       contract="Service.ISomeService" /> 
    </service> 
    <service name="Service.SomeOtherService"> 
    <endpoint address="net.tcp://localhost:8000/SomeService2" 
       binding="netTcpBinding" 
       contract="Service.ISomeOtherService" /> 
    </service> 
</services>