具有异步任务的 WCF Web 服务

本文关键字:WCF Web 服务 任务 异步 | 更新日期: 2023-09-27 18:36:47

>我有一个WCF Web服务,它必须像这样工作:

  1. 它是从外面调用的
  2. 它将响应返回给客户端,并对输入数据进行基本验证
  3. 它启动异步任务,不得通知客户端。

客户端必须只在步骤 2 中接收响应,然后不接收其他任何响应。我认为这不是真正的异步 Web 服务,而是具有异步线程的同步 Web 服务。

我使用 .NET 4.0。

我可以使用什么技术?

具有异步任务的 WCF Web 服务

你不应该这样做。例如,如果 WCF 服务承载在 ASP.NET 中,则 ASP.NET 将假定在没有未完成的请求时它不执行任何操作。因此,您可以在工作时回收服务。

正确的体系结构是具有用于处理的单独"后端"系统(例如,Azure Web 作业或 Win32 服务),并在 WCF 服务和后端服务(例如,Azure 队列或 MSMQ)之间放置一个可靠的队列。当 WCF 应用收到请求时,它会验证参数,在队列中弹出一条消息,然后返回。后端服务独立地从队列中读取请求并处理它们。

我有一篇博客文章更详细地介绍了其他一些替代方法。

如果要在服务中使用 async/await,则需要此处描述的异步泵:

Await, SynchronizationContext, and Console Apps: Part 3 by Stephen Toub