是否可以创建WCF“反向”tcp通道?

时间:2009-03-06 14:24:48

标签: .net wcf .net-3.5

通常,WCF TCP通道将连接到主机,然后允许您通过它进行方法调用。

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

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

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

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

b)服务器上有多个服务需要客户端调用,因此设置反向连接的“回调契约”机制会很麻烦,因为需要进行许多“注册”样式调用才能获得所有服务建立。理想情况下,我想一次性设置多个服务 - 使用这种方法可以吗?

1 个答案:

答案 0 :(得分:3)

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

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

双工通信并不意味着回调功能,而是整个合同。当客户端打开与主机的双工连接时,它最终会运行自己的服务器,在回调协定句柄中侦听来自服务器的传入呼叫。任何邮件发送客户端 - >服务器或服务器 - >客户端将通过所有标准的WCF基础架构。

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