我有一个应用程序(服务器)和WCF通过命名管道(所有.NET 4.0)连接的客户端。一切正常。从客户端到服务器和服务器到客户端(回调)的调用方法都可以正常工作。现在,我该如何简单地将一个事件从服务器发送到客户端?WCF将事件发送到客户端
我试图做到的是:
- 客户端调用立即返回服务器上的长期方法
- 当服务器已准备好处理它发送一个事件到客户端
- 客户端可以然后调用服务器上的方法以获得结果
如何以干净的方式执行此操作?
我有一个应用程序(服务器)和WCF通过命名管道(所有.NET 4.0)连接的客户端。一切正常。从客户端到服务器和服务器到客户端(回调)的调用方法都可以正常工作。现在,我该如何简单地将一个事件从服务器发送到客户端?WCF将事件发送到客户端
我试图做到的是:
如何以干净的方式执行此操作?
你可以看看它是异步执行的:How to: Call WCF Service Operations Asynchronously。 (这是一个很大的代码粘贴在这里,所以我只是离开链接)
如果你想变得更简单,异步WCF调用是要走的路。在.NET 4.0中有async
关键字。或者您可以等待一段时间,然后调用服务器功能来查看文件是否准备就绪。为了确保我会使用异步,更简单快速地使用轮询。
我总是有一个客户端和一个服务器,所以我认为发布/订阅实现可能会矫枉过正? – Enrico
[双工服务](http://msdn.microsoft.com/en-us/library/ms731064.aspx)方案似乎适合您的要求,我不确定NamedPipes是否支持双工通信,但是[this msdn文章](http://msdn.microsoft.com/en-us/library/ms730879.aspx)建议它。 – Jeroen
@Jeroen当服务器发布它的事件发生在后台线程上时呢?在这种情况下'OperationContext.Current'将是** null **,我将无法将该事件发布到客户端。 – JobaDiniz