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

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

问题描述:

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

总之,你可以简单地通过配置来完成!

Have you seen this tutorial? Do check this out

它是一个很好的教程,带有使用Microsoft Service Configuration Editor配置具有多个端点的示例服务的整个基本过程的屏幕图像。

+1

链接已死...... – Vaccano 2012-11-02 21:36:48

+1

是的。链接已死。即使ti在链接中表示相同的内容,实际的完整响应总是更好。 – 2012-12-07 10:56:27

+0

@Vaccano/Coral - 更新了链接。虽然我通常会倾向于赞同珊瑚关于发布内容的评论,但在这种情况下,我发现它有点太长,并且有很多一步一步的截图 - 所以我不认为它们有什么好的方法可以做到简洁方式。因此,链接。 – InSane 2012-12-08 13:29:28

这都是配置的事情 ​​- 当你定义你的服务时,你只需要去定义两个端点 - 一个用于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
  • 一个netTcpBindingtcp://localhost:8787/MyService

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

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

  • [A] ddress - 哪里可以在服务到达/叫什么名字?
  • [B]插入 - 如何调用服务(协议,设置,安全等)?
  • [C] ontract - 服务在这个地址提供什么,什么方法暴露?
+1

你也可以为nettcp指定一个基地址,只是为了保持一致性。 – 2010-10-14 10:40:37

+1

@Johann Blais:是的,你完全可以这么做 - 这完全取决于你。我只想显示这两种方法 - 带有基地址(http),并且不在标签中指定明确的完整地址。 – 2010-10-14 11:56:31

+0

我试过这个,但是当我访问http:// localhost:8282/ws时,我得到一个HTTP 404 - 找不到文件错误。还有其他需要吗? – 2012-12-07 12:36:29