繁体   English   中英

从WCF服务异步返回到多个客户端

[英]Asynchronously return from wcf service to multiple clients

我有一个WCF服务,其中有长期运行的方法,例如获取和处理某种数据,然后将其返回给客户端。 我试图使用类似于以下内容的合同

Task<string> ServiceMethod(string message);

问题是如果我想从服务中将相同的数据返回给多个客户端,那我该怎么做(如何获取和存储有关请求数据的客户端的信息)。

另外,如果我需要从上述方法中调用后台工作者,那么我该如何处理runworker_completed并将结果返回至上述方法。


附加信息

仅在客户端请求相同数据的情况下才将相同数据返回给多个客户端,但是由于获取和处理该数据需要花费时间,因此只要有可用数据,我都想返回给所有请求该数据的客户端。

如果我正确理解了您的问题,则希望该服务在完成长时间运行的生成数据的过程后回调客户端。 由于您必须照顾多个客户端,因此建议您使用Duplex WCF。 双工服务合同提供了在调用客户端时回调方法的功能。 以下代码项目链接是Duplex的一个很好的示例,并且具有更多详细信息

http://www.codeproject.com/Articles/491844/A-Beginners-Guide-to-Duplex-WCF

请注意,您应该有自己的逻辑来维护回调通道列表

我已使用请求的密钥将Task的缓存存储在服务中。 每当完成该密钥的任务时,我都会将任务发送回所有请求相同密钥的客户端。 对于已经具有基于事件的完成功能的现有功能,我也使用TaskCompletionSource并将其存储在缓存中,然后再次使用它发送异步响应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM