【问题标题】:Multiple WCF service of the same service and contract type相同服务和合同类型的多个 WCF 服务
【发布时间】:2010-01-01 06:07:14
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

    标签: wcf


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      所以基本上我应该能够通过向服务添加多个端点来做到这一点:

      <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 个端点?

      【讨论】:

      • 请考虑更改您的原始问题以添加更多信息,而不是添加答案 - 除非通过有限的 cmets,否则人们无法回复答案
      【解决方案3】:

      我似乎认为该服务类型和 配置文件中的合约 应该是唯一的。

      为什么?它们不必是唯一的——不可能。必须唯一的是服务端点的地址(完整地址)——当然,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>
      

      【讨论】:

        猜你喜欢
        • 2020-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-20
        • 1970-01-01
        相关资源
        最近更新 更多