wcf самостоятельный хостинг несколько услуг

В моем проекте у меня есть две службы Service1 и Service2 (т.е. сервисные контракты). Я хочу, чтобы эти две были размещены на собственном хостинге с помощью консоли. Для этого я использую службу с именем "myservice" и реализую оба интерфейса, то есть IService1 и IService2, например

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>

Я хочу, чтобы эти два сервиса были отдельными, то есть сервисом Service1 и Service2 (вместо myservice) с привязкой tcp и самостоятельным хостингом. Любой код / ​​помощь / предложения приветствуются.


person user421719    schedule 23.12.2013    source источник
comment
например Service1: Iservice1 ... Service2: IService2 ServiceHost serviceHost1 = новый ServiceHost (typeof (Service1)); ServiceHost serviceHost2 = новый ServiceHost (typeof (Service2)); ServiceHost1.Open (); ServiceHost2.Open (); ... как насчет настроек конфигурации ???   -  person user421719    schedule 23.12.2013


Ответы (1)


Если у вас должны быть две отдельные службы, тогда вам понадобятся два отдельных класса реализации службы, а также два отдельных 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>
person marc_s    schedule 23.12.2013