2013-12-23 206 views
1

在我的項目中,我有兩個服務Service1和Service2(即服務合同)。我希望這兩個自我託管使用控制檯。爲此,我使用名爲「myservice」的服務並實現兩個接口ie IService1和IService2像wcf自我託管多種服務

public class myservice : IService1,IService2 
... 
.... 


ServiceHost serviceHost = new ServiceHost(typeof(myservice)); 
serviceHost.Open(); 

端點使用:

<service behaviorConfiguration="myBehavior" name="myservice"> 
    <endpoint address="sa1" binding="netTcpBinding" contract="IService1"/> 
    <endpoint address="sa2" binding="netTcpBinding" contract="IService2"/> 
    <host> 
    <baseAddresses> 
     <add baseAddress="net.tcp://localhost:8001/" /> 
    </baseAddresses> 
    </host> 
</service> 

我想這兩個是命名服務1和服務2(而不是爲MyService)與TCP綁定和自我hosting.Any代碼/幫助單獨的服務,即服務/建議表示讚賞。

+0

像服務1:Iservice1。 Service2:IService2 ServiceHost serviceHost1 = new ServiceHost(typeof(Service1)); ServiceHost serviceHost2 = new ServiceHost(typeof(Service2)); ServiceHost1.Open(); ServiceHost2.Open(); ...配置設置怎麼樣? – user421719

回答

2

如果必須有兩個獨立的服務 - 那麼你需要兩個單獨的服務實現類以及兩個獨立的ServiceHost實例:

public class Service1 : IService1 
{ 
    ... 
} 

public class Service2 : IService2 
{ 
    ... 
} 


ServiceHost serviceHost1 = new ServiceHost(typeof(Service1)); 
serviceHost1.Open(); 

ServiceHost serviceHost2 = new ServiceHost(typeof(Service2)); 
serviceHost2.Open(); 

端點配置:

<service name="YourNamespace.Service1" behaviorConfiguration="myBehavior" > 
    <endpoint address="sa1" binding="netTcpBinding" contract="IService1" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="net.tcp://localhost:8001/" /> 
     </baseAddresses> 
    </host> 
</service> 
<service name="YourNamespace.Service2" behaviorConfiguration="myBehavior" > 
    <endpoint address="sa2" binding="netTcpBinding" contract="IService2" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="net.tcp://localhost:8002/" /> 
     </baseAddresses> 
    </host> 
</service>