Как определить конечные точки для нескольких сервисных контрактов, реализованных в разных классах? - PullRequest
0 голосов
/ 26 августа 2010

Я взял библиотеку WCFService, в которой я определил несколько контрактов на обслуживание (интерфейсы) в отдельных файлах cs и реализовал их отдельно.Например ..

[ServiceContract]
public interface IService1
{
     [OperationContract]  
    string GetService1Msg();
}

[ServiceContract]
public interface IService2
{
    [OperationContract]
    string GetService2Msg();
}

Я определил выше интерфейсы в отдельных файлах cs. Теперь я реализовал их отдельно следующим образом.

Это файл Service1.cs:

public class Service1 : IService1
{
    string GetService1Msg()
    {  
        return "Service1";
    }
}

Это файл Service2.cs:

public class Service2 : IService2
{
    string GetService2Msg()
    {  
        return "Service2";
    }
}

Мое намерение здесь состоит в том, чтобы выставить выше двух в виде двух сервисных контрактов / интерфейсов снаружи.Теперь мой вопрос заключается в том, как определить конечные точки для этих двух интерфейсов служб в app.config этой библиотеки WCF-служб?

1 Ответ

1 голос
/ 26 августа 2010

Это базовая конфигурация двух служб, доступных в Net.Tcp, каждая с одной конечной точкой для данных и конечной точкой для метаданных:

<behaviors>
  <serviceBehaviors>
    <behavior name="Metadata">
     <serviceMetadata />
    </behavior>
  <serviceBehaviors>
</behaviors>
<services>
  <service name="Namespace1.Service1" behaviorConfiguration="Metadata"> 
    <host>
     <baseAddresses>
      <add baseAddress="net.tcp://localhost/Service1" />
     </baseAddresses>
     <endpoint address="" binding="netTcpBinding" contract="Namespace1.IService1" />
     <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
    </host>
  </service>
  <service name="Namespace2.Service2" behaviorConfiguration="Metadata"> 
    <host>
     <baseAddresses>
      <add baseAddress="net.tcp://localhost/Service2" />
     </baseAddresses>
     <endpoint address="" binding="netTcpBinding" contract="Namespace2.IService2" />
     <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
    </host>
  </service>
</services>

Вам все еще нужен код для размещения ваших служб.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...