是否可以在同一个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服务中自托管这些服务。
感谢。
答案 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>