【问题标题】:WCF service with two binding types for two different clients具有两个不同客户端的两种绑定类型的 WCF 服务
【发布时间】:2011-04-25 04:43:48
【问题描述】:

如何公开 WCF 服务,以便一个使用 wsHttp 绑定的客户端和另一个使用 netTcp 绑定的客户端都可以使用该服务?

【问题讨论】:

    标签: .net wcf wcf-binding


    【解决方案1】:

    简单来说就是通过配置就可以搞定!

    Have you seen this tutorial? Do check this out

    这是一个出色的教程,其中包含使用Microsoft Service Configuration Editor 配置具有多个端点的示例服务的整个基本过程的屏幕图像。

    【讨论】:

    • 是的。链接死了。即使 ti 在链接中说了同样的话,实际的完整响应总是更好。
    • @Vaccano / Coral - 更新了链接。虽然我通常倾向于同意 Coral 的 cmets 关于发布内容的观点,但在这种情况下,我发现它有点太长了,而且有很多一步一步的截图——所以我认为没有什么好的方法可以简洁地做到这一点方式。因此链接。
    【解决方案2】:

    这都是配置的事情——当你定义你的服务时,你只需定义两个端点——一个用于wsHttpBinding,另一个用于netTcpBinding。就这么简单!

    <system.serviceModel>
       <services>
          <service name="YourNamespace.MyService">
             <endpoint 
                 address="ws" 
                 binding="wsHttpBinding" 
                 contract="YourNamespace.IMyService" />
             <endpoint 
                 address="net.tcp://localhost:8787/MyService" 
                 binding="netTcpBinding"
                 contract="YourNamespace.IMyService" />
           <host>
               <baseAddresses>
                    <add baseAddress="http://localhost:8282/" />
               </baseAddresses>
           </host>
         </service>
      </services>
    </system.serviceModel>
    

    现在您的服务公开了两个端点:

    • 使用wsHttpBindinghttp://localhost:8282/ws
    • tcp://localhost:8787/MyService 使用netTcpBinding

    两个端点都用于相同的服务,相同的服务合同,例如提供相同的功能和服务方法。

    WCF 中的每个服务端点都必须定义 WCF 的 ABC:

    • [A]地址 - 在哪里可以到达/调用服务?
    • [B]inding - 如何调用服务(协议、设置、安全等)?
    • [C]合同 - 服务在此地址提供什么,公开了哪些方法?

    【讨论】:

    • 您也可以为 nettcp 指定一个基地址,只是为了保持一致性。
    • @Johann Blais:是的,你绝对可以这样做——这完全取决于你。我只是想展示这两种方法 - 使用基地址(用于 http),并且没有在 标记中指定明确的完整地址。
    • 我已经尝试过了,但是当我访问 localhost:8282/ws 时,我得到一个 HTTP 404 - File not found 错误。还有什么需要的吗?
    猜你喜欢
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    相关资源
    最近更新 更多