如何异步处理 WCF 的传入调用?

Posted

技术标签:

【中文标题】如何异步处理 WCF 的传入调用?【英文标题】:How to process incoming calls asynchronously to WCF? 【发布时间】:2020-06-25 09:42:29 【问题描述】:

我有一个 WCF 服务,该服务是从多个用户使用的 Web 应用程序(Web 应用程序)调用的。

WCF 服务处理单个请求需要一些时间(例如 30 秒)。

我注意到如果我在两个选项卡或两个浏览器窗口中打开 Web App 并让 Web App 向 WCF 服务发送两个请求,它们随后会被处理。也就是 WCF 会在第一个请求处理完之后才开始处理第二个请求。

有没有办法让 WCF 服务并行处理传入的请求?

【问题讨论】:

我可以假设所有请求都来自 WebApp 服务器,因此您的服务只有一个实例。您应该修改 WCF 逻辑并实现一些 background workers/ async await 模型。或更改通信方案。 【参考方案1】:

仅仅因为技术允许你做某事并不意味着它是一个好主意。

以下是您寻求帮助开发的危险工具的说明。 https://docs.microsoft.com/en-us/dotnet/framework/wcf/how-to-implement-an-asynchronous-service-operation

每个程序员都应该了解可访问的分布式流程所带来的复杂性。简而言之,它们集中了用户需求。哈佛商业评论证明 DRY 是一种不好的做法。 http://www.powersemantics.com/p.html

请自行决定。我给了你一个替代方案。

【讨论】:

以上是关于如何异步处理 WCF 的传入调用?的主要内容,如果未能解决你的问题,请参考以下文章

中间层异步 WCF 服务调用和向 UI 层返回数据的质量设计

如何异步调用我的 WCF 服务?

ASP.NET Web 表单 - 如何异步调用 WCF 异步方法?

前后分离模型之封装 Api 调用

前后分离模型之封装 Api 调用

前后分离模型之封装 Api 调用