我正在编写一组将相互通信的 WCF 服务。我希望能够在服务器之间建立双向连接。但是,在某些时候,不同类型的客户端(.NET 或 Javascript(应该能够与这些服务进行通信。
我目前正在WsDualHttpBinding中使用回调,它似乎可以解决问题,至少在基本意义上是这样。服务可以相互发送基本消息。我担心的是打开多个连接,因为带宽将来可能会成为一个问题。
我担心NetHttpBinding是一个更好的工具。 我想知道与WSDualHttpBinding相比,使用NetHttpBinding有哪些优点或缺点。
WSDualHttpBinding具有更广泛的覆盖范围,因为它支持HTTP协议。 然而,NetHttpBinding的速度更快,因为它在网络中的nettcp上工作。
创建WSDualHttpBinding是有原因的。WCF 提供了对服务"回调"的支持,即客户端上的方法,每当服务执行完成时都会收到通知。不幸的是,HTTP--作为一个单向通道-不允许回调(相比之下,TCPBinding允许它,因为TCP是一个完整的双工通道(。为了绕过HTTP的单向特性,发明了DualHttpBinding-两个同时打开的HTTP连接 - 一个用于服务请求 - 一个用于回调。
NetHttpBinding是专为使用 HTTP 或 WebSocket 服务而设计的绑定,默认情况下使用二进制编码。NetHttpBinding 将检测它是与请求-回复协定还是双工协定一起使用,并更改其行为以匹配 - 它将使用 HTTP 进行请求-回复,使用 WebSockets 进行双工。