如何为在不同类中实现的多个服务合同定义端点?

时间:2010-08-26 05:32:18

标签: wcf

我已经使用了一个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";
    }
}

我的目的是将上面的两个服务合同/接口暴露在外面。 现在我的问题是如何在这个WCF服务库的app.config中为这两个服务接口定义端点?

1 个答案:

答案 0 :(得分:1)

这是在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>

您仍然需要一些代码来托管您的服务。