我正在尝试确定在同一服务器或LAN上运行的两个.Net进程之间处理全双工通信的最合适方式是什么。我们有两个进程需要能够相互调用方法。
目前,我们正在使用带有NamedPipe或Tcp通道的WCF,并将ProcessA注册到ProcessB。我们的WCF契约指定了一个Callback接口,因此ProcessB可以在ProcessA上调用方法。
我的问题是以下哪项更有意义,更简单,更强大?
我不完全了解回调代理和线程问题的生命周期。我已经看过各种关于回调方法阻塞的帖子。
答案 0 :(得分:3)
您的选项2基本上只是对WCF在选项1中为您所做的事情的描述。
当您的客户端打开连接时,它会向服务注册回调通道。此通道保持打开状态,直到您关闭它 - 通过显式调用Close或通过处理它。
因此,在您所描述的场景中,听起来您应该继续使用回调合约。这就是它们的用途。
答案 1 :(得分:1)
选项2确实描述了选项1的作用,但它实现了您自己无法做到的方法。例如,如果您使用TCP通道,它将使用客户端打开到服务器的Socket来重新发送数据。
这意味着它将在防火墙和NAT后面工作。
结帐
http://diagonaltechblog.blogspot.com/2009/12/wcf-duplex-channels-firewalls-and-nats.html
它没有详细介绍如何创建双工频道,但听起来你已经管理了那么多。
干杯