WCF回调在HTTP上是如何工作的?

8
我了解的是,在HTTP协议中客户端连接服务器并请求数据,服务器不能主动调用客户端。如果是这种情况,那么WCF回调是如何工作的呢?
谢谢,
2个回答

6
当使用HTTP传输时,服务器确实会调用客户端。为使其工作,客户端必须位于公共端点上,因此防火墙等必须进行适当配置。
来自http://msdn.microsoft.com/en-us/magazine/cc163537.aspx
由于其无连接性质,HTTP不能用于回调,因此您不能在BasicHttpBinding或WSHttpBinding上使用回调。Windows Communication Foundation为NetTcpBinding和NetNamedPipeBinding提供了回调支持,因为底层传输是双向的。为了支持HTTP上的回调,Windows Communication Foundation提供了WSDualHttpBinding,它实际上设置了两个HTTP通道:一个用于从客户端到服务的调用,另一个用于从服务到客户端的调用。
并且来自WSDualHttpBinding的参考http://msdn.microsoft.com/en-us/library/system.servicemodel.wsdualhttpbinding.aspx
这个绑定要求客户端有一个公共URI,为服务提供回调端点。这是由ClientBaseAddress提供的。双向绑定公开了客户端的IP地址给服务端。客户端应使用安全性来确保只连接到它信任的服务。

嗨@JeremyMcGee,我正在研究这些主题。我正在使用一个简单的控制台应用程序作为客户端,如此处所述(http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/a-simple-duplex-service-in-wcf/)。我从你的回答中了解到,客户端必须有一个终结点供服务器访问,我的问题是,有没有办法查看这个终结点是什么? - SamGhatak

1

一个 WCF 双工 HTTP 客户端(例如使用 wsDualHttpBinding)也会启动一个服务器,以便在 "真实" 服务器回调时监听请求。

因此,这在 NAT 环境下无法工作,只是其中之一的问题。


这本质上是无用的,因为您想要进行客户端回调的原因是客户端在防火墙后面。 - user1034912
1
@user1034912 当双方终端都在控制下的B2B情况下,这可能是有用的。但对于消费者产品来说,就不那么重要了。请记住,所有这些东西都是10年前的事情,在WebSockets和其他技术出现之前。 - CodeCaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接