2013-12-23 218 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>