WCF服务,具有两种不同客户端的绑定类型

Pro*_*ofK 3 .net wcf wcf-binding

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

mar*_*c_s 12

这是一个配置的东西 - 当你定义你的服务时,你只需要去定义两个端点 - 一个用于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>
Run Code Online (Sandbox Code Playgroud)

现在您的服务暴露了两个端点:

  • 一个使用wsHttpBindingathttp://localhost:8282/ws
  • 一个使用netTcpBindingattcp://localhost:8787/MyService

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

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

  • [A]地址 - 在哪里可以到达/呼叫服务?
  • [B] inding - 如何调用服务(协议,设置,安全性等)?
  • [C] ontract - 该地址提供的服务是什么,暴露了哪些方法?