具有异步任务的 WCF Web 服务
本文关键字:WCF Web 服务 任务 异步 | 更新日期: 2023-09-27 18:36:47
>我有一个WCF Web服务,它必须像这样工作:
- 它是从外面调用的
- 它将响应返回给客户端,并对输入数据进行基本验证
- 它启动异步任务,不得通知客户端。
客户端必须只在步骤 2 中接收响应,然后不接收其他任何响应。我认为这不是真正的异步 Web 服务,而是具有异步线程的同步 Web 服务。
我使用 .NET 4.0。
我可以使用什么技术?
你不应该这样做。例如,如果 WCF 服务承载在 ASP.NET 中,则 ASP.NET 将假定在没有未完成的请求时它不执行任何操作。因此,您可以在工作时回收服务。
正确的体系结构是具有用于处理的单独"后端"系统(例如,Azure Web 作业或 Win32 服务),并在 WCF 服务和后端服务(例如,Azure 队列或 MSMQ)之间放置一个可靠的队列。当 WCF 应用收到请求时,它会验证参数,在队列中弹出一条消息,然后返回。后端服务独立地从队列中读取请求并处理它们。
我有一篇博客文章更详细地介绍了其他一些替代方法。
如果要在服务中使用 async/await,则需要此处描述的异步泵:
Await, SynchronizationContext, and Console Apps: Part 3 by Stephen Toub