具有相同服务和合同类型的多个WCF服务

时间:2010-01-01 06:07:15

标签: wcf

是否可以在同一个AppDomain上托管相同类型和合同的2个WCF服务?

在下面的配置中,我正在配置实现合同ISomeService的Service.SomeService类型的单个服务。我想要做的是能够托管这种类型的2个服务,当然还有不同的URI。

<system.serviceModel>
<services>      
  <service name="Service.SomeService">
    <endpoint address="net.tcp://localhost:8000/SomeService"
              binding="netTcpBinding"
              contract="Service.ISomeService" />
  </service>
</services>       

我也是在Windows服务中自托管这些服务。

感谢。

3 个答案:

答案 0 :(得分:1)

是的,Windows服务可以托管多个WCF服务。但是,每个WCF服务必须具有唯一的地址。将端点添加到ServiceHost实例时,必须为每个端点指定唯一的地址,这意味着您必须至少更改一个方案(net.tcp,net.pipe,http等),域,端口或路径。

答案 1 :(得分:0)

所以基本上我应该可以通过向服务添加多个端点来实现这一点:

<services>      
  <service name="Service.SomeService">
    <endpoint address="net.tcp://localhost:8000/SomeService1"
              binding="netTcpBinding"
              contract="Service.ISomeService" />
    <endpoint address="net.tcp://localhost:8000/SomeService2"
              binding="netTcpBinding"
              contract="Service.ISomeService" />
  </service>

我认为配置文件中的服务类型和合同应该是唯一的。但是,是否可以添加相同类型和合同的2个服务,而不是将2个端点添加到同一服务?

答案 2 :(得分:0)

  

我出现了服务类型和   在配置文件中签约   应该是独一无二的。

为什么呢?它们不一定是唯一的 - 没办法。唯一不一样的是服务端点的地址(完整的) - 当然,WCF如何知道在哪里发送某些请求?

  

但是可以改为加2   相同类型和合同的服务   而不是添加2个端点   同样的服务?

当然,没问题:

<services>      
  <service name="Service.SomeService">
    <endpoint address="net.tcp://localhost:8000/SomeService1"
              binding="netTcpBinding"
              contract="Service.ISomeService" />
  </service>
  <service name="Service.SomeOtherService">
    <endpoint address="net.tcp://localhost:8000/SomeService2"
              binding="netTcpBinding"
              contract="Service.ISomeOtherService" />
  </service>
</services>