【问题标题】:How do WCF callbacks work over HTTP?WCF 回调如何通过 HTTP 工作?
【发布时间】:2011-11-01 17:56:41
【问题描述】:

据我了解,在 HTTP 中,客户端连接到服务器并请求数据。服务器无法调用客户端。如果是这种情况,那么 WCF 回调如何工作?

谢谢,

【问题讨论】:

    标签: wcf http


    【解决方案1】:

    当与 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,我正在研究这些主题。我正在使用一个简单的控制台应用程序作为引用 here 的客户端。我从您的回答中了解到,客户端必须有一个端点才能让服务器命中,我的问题是,有什么办法可以查看这个端点是什么?
    【解决方案2】:

    WCF Duplex HTTP 客户端(例如,当使用wsDualHttpBinding 时)也会启动服务器,以便在“真实”服务器回调时监听请求。

    所以这在 NAT 上不起作用,仅举一例。

    【讨论】:

    • 这本质上是无用的,因为您想要进行客户端回调的原因是因为客户端位于防火墙后面
    • @user1034912 当然可以,但是对于两个端点都在控制之下的 B2B 情况,它可能很有用。对于消费者的东西,更少。请记住,在 websockets 和所有这些之前,所有这些东西都有 10 多年的历史了。
    猜你喜欢
    • 2019-11-21
    • 1970-01-01
    • 2015-11-07
    • 2014-12-20
    • 1970-01-01
    • 2014-03-02
    • 2014-02-03
    • 2015-10-05
    • 1970-01-01
    相关资源
    最近更新 更多