两种不同客户端的两种绑定类型的WCF服务
总之,你可以简单地通过配置来完成!
Have you seen this tutorial? Do check this out。
它是一个很好的教程,带有使用Microsoft Service Configuration Editor配置具有多个端点的示例服务的整个基本过程的屏幕图像。
这都是配置的事情 - 当你定义你的服务时,你只需要去定义两个端点 - 一个用于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>
现在,你有你的服务暴露两个端点:
- 一个使用使用
wsHttpBinding
在http://localhost:8282/ws
- 一个
netTcpBinding
在tcp://localhost:8787/MyService
两个端点相同的服务,对于相同的服务合同,例如提供相同的功能和服务方法。
在WCF每个服务端点必须定义WCF的ABC:
- [A] ddress - 哪里可以在服务到达/叫什么名字?
- [B]插入 - 如何调用服务(协议,设置,安全等)?
- [C] ontract - 服务在这个地址提供什么,什么方法暴露?
你也可以为nettcp指定一个基地址,只是为了保持一致性。 – 2010-10-14 10:40:37
@Johann Blais:是的,你完全可以这么做 - 这完全取决于你。我只想显示这两种方法 - 带有基地址(http),并且不在
我试过这个,但是当我访问http:// localhost:8282/ws时,我得到一个HTTP 404 - 找不到文件错误。还有其他需要吗? – 2012-12-07 12:36:29
链接已死...... – Vaccano 2012-11-02 21:36:48
是的。链接已死。即使ti在链接中表示相同的内容,实际的完整响应总是更好。 – 2012-12-07 10:56:27
@Vaccano/Coral - 更新了链接。虽然我通常会倾向于赞同珊瑚关于发布内容的评论,但在这种情况下,我发现它有点太长,并且有很多一步一步的截图 - 所以我不认为它们有什么好的方法可以做到简洁方式。因此,链接。 – InSane 2012-12-08 13:29:28