【问题标题】:Is it possible to create a WCF "reverse" tcp channel?是否可以创建 WCF“反向”tcp 通道?
【发布时间】:2010-10-11 18:23:04
【问题描述】:

通常,WCF TCP 通道会连接到主机,然后允许您对其进行方法调用。

我想要一个与客户端建立出站连接的服务,但是一旦建立连接,客户端就可以像传统连接一样对我的服务进行方法调用。

我怀疑这是某种自定义频道,但想知道是否 a) 这已经完成了 b) 是否有任何我应该尝试避免的陷阱

注意 - 我不是在谈论双工样式回调,而是客户端和服务器继续进行常规样式对话,服务器通过标准 wcf 调度程序响应客户端请求 - 只有底层的发起者tcp 连接是服务器而不是客户端。

Siz 建议它就像使用双工合同一样简单。稍微扩大要求: a) 禁止客户端与服务器建立连接。因此,如果双工通道建立单独的 tcp 连接,那么这将不起作用。我认为从我的测试中它不会共享 tcp 下的原始连接(任何人都可以确认吗?)

b) 客户端需要调用服务器上的多个服务,因此设置反向连接的“回调合约”机制会很尴尬,因为需要许多“注册”样式调用才能全部获取它们设置。理想情况下,我想一次设置多个服务 - 使用这种方法可以吗?

【问题讨论】:

    标签: .net wcf .net-3.5


    【解决方案1】:

    看看 MSDN here。 NetTcpBinding 支持双工通信。

    在您的情况下,映射到 WCF 术语,所有客户端实际上都在托管服务,而主机实际上是连接到多个主机的客户端。双工通道将允许您双向发送消息。

    双工通信不是回调函数,而是整个合约。当客户端打开到主机的双工连接时,它最终会运行自己的服务器,沿着回调合约句柄监听来自服务器的传入调用。任何发送到客户端 -> 服务器或服务器 -> 客户端的消息都将通过所有标准 WCF 基础结构。

    公平地说,这并不能完全回答您的问题。但是,要创建任何通道,您将需要连接发起者首先联系某种服务器。所以最简单的方法是双工连接。

    【讨论】:

    • 据我了解,双工只是意味着您可以提供回调函数。我不是在谈论回调,而是让客户能够推动沟通并参与所有正常的调度等
    猜你喜欢
    • 1970-01-01
    • 2011-12-12
    • 2011-04-25
    • 2010-10-23
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多