WCF - AsyncPattern = true或IsOneWay = true

时间:2010-02-01 10:39:41

标签: wcf asynchronous

我的WCF服务中很少有方法需要花时间 - 生成报告和发送电子邮件。

根据当前要求,要求客户端应用程序只提交请求,然后不等待整个过程完成。它将允许用户继续在客户端应用程序中执行其他操作,而不是等待整个过程完成。

我怀疑将走哪条路:

AsyncPattern = true OR  
IsOneWay=true 

请指导。

2 个答案:

答案 0 :(得分:3)

它可以是两者。

一般来说,除了开发人员懒惰之外,我认为没有理由让的WCF操作异步。


你不应该比较它们,因为它们不具有可比性。

简而言之,无论您是否返回值,AsyncPattern = True都会执行异步调用。

OneWay仅适用于void方法,并锁定您的线程,等待接收方确认收到消息。

答案 1 :(得分:0)

我知道这是一篇旧帖子,但在你的场景中IMO你应该使用IsOneWay,因为你不关心服务器结果是什么。根据您是否需要最终通知客户端(例如,服务器作业完成或失败),您可能还需要查看更改接口以使用SessionMode = required,然后使用双工绑定。

即使你确实想要使用异步双向通信,因为你的客户端DID关心结果,也有不同的概念:

    服务器上的
  • AsyncPattern = true - 您可以这样做以释放服务器资源,例如:如果底层资源(?报告的SSRS,Mail API等)支持异步操作。但这会使服务器受益,而不是客户端。
  • 在客户端上,您始终可以通过勾选“生成异步操作”来生成服务引用代理 - 在这种情况下,您的客户端将不会阻止,并且在操作完成时将使用回调。