我有一个WCF服务器,它暴露了一个接口,该接口有一个用于向客户端发送事件的回调接口。
我宁愿不将回调接口上的所有方法标记为“OneWay”,因为它会使错误跟踪和记录更加困难。
客户端是用WinForms编写的,因此在调用服务器返回之前,回调将不会是进程。 (这是我想要的行为)
我使用Asynchronous Eg进行所有回调。 BeginMyMethod(...),因此服务器不会被阻止等待客户端。
但是,如果将回叫发送到向服务器发送请求的同一客户端,则TCP通道会自行死锁,因为它似乎无法将响应发送回客户端,客户端已通过同一信道将回叫响应发送回服务器。
有没有办法在WCF中通过单个TCP连接进行真正的双向通信?
答案 0 :(得分:0)
如果服务器和客户端同时作为服务器和客户端(如果可以理解的话),则可以执行此操作
它会像这样工作:
另一个更简单的解决方案是不重用chanel,从而避免死锁。