有关WCF绑定选项的问题

时间:2011-12-04 11:18:32

标签: wcf

WCF具有以下绑定选项:

  • HTTP(S)
  • 的net.tcp
  • MSMQ

几个问题:

  • AFAIK, http(s)实际上是TCP协议之上的更高级协议, net.tcp 实际上是TCP协议。那么为什么我们两个都有?为什么不只有一个 TCP 协议?

  • MSMQ可以跨机器边界使用吗?

  • 如果我想要其他绑定选项,我该怎么办?

感谢。

1 个答案:

答案 0 :(得分:3)

netTcpBinding确实是一个“低级”协议,因此,它也比http快一点。它在公司内部的Intranet /本地网络环境中运行良好。

但是netTcpBinding并不容易跨越防火墙和路由器 - 你必须开始打开端口,这是一个具有很多安全隐患的东西,因此通常很难完成,特别是在大公司中。

WCF的http绑定在端口80上运行 - 它几乎可以在任何防火墙上打开 - 因此这些绑定为您提供更多覆盖 - 您的客户和公司外部的人员可以与服务进行通信这比使用netTcpBinding的那个更容易。

WCF的优点在于:您可以拥有单一服务,但您可以使用netTcpBinding(快速,二进制编码)公开两个端点 )用于本地客户端 - 以及从LAN外部调用的客户端的第二个“basicHttpBinding”端点。服务实现代码中有 nothing 需要了解这一点,无论您使用的是nettcp还是http,都不必编程。 WCF会为您处理所有这些。


MSMQ是一个完全不同的野兽 - 而netTcp和http绑定以“连接”方式工作 - 你调用服务并等待答案 - MSMQ绑定是一个基于队列的系统。在这种情况下,您将请求放入队列 - 然后立即完成。一段时间后,队列将由某种工作进程或程序处理,并且将完成某些操作。并且您可能会以某种方式收到通知(电子邮件,另一个队列上的响应消息或其他内容) - 但是a)调用服务,b)处理消息和c)获得响应完全解耦并且可以在几秒钟内发生 - 或者它可能需要数天。并且是!当然MSMQ适用于机器边界!