我正在构建一个将由供应商的应用程序使用的 .NET Web 服务,但我不确定如何完成以下任务:
- 供应商将致电我的网络服务并提供一些信息,但希望快速返回确认信息,仅说明我收到了他们的信息。他们不关心我用它做什么,也不想确认我已经完成处理。
- 我传递的信息需要在幕后做一些事情,并以时间敏感的方式对信息采取行动 - 即在几分钟内采取一些行动。我将联系许多其他网络服务,并进行一些数据库工作。显然,这将是在我向调用应用程序响应“成功”之后。
我无法控制供应商访问我的服务的方式,并且他们用来调用它的方法是同步的,因此我需要快速响应,让调用应用程序继续其工作。在我看来,有两种选择,尽管我对其他人持开放态度:
- 由于调用应用程序本质上是提交到队列,以便我编写的进程可以处理它,因此我可以让 Web 服务将项目提交到数据库(或 MSMQ 或另一个队列),然后返回成功。队列进程将从那里开始处理。
- 理想情况下,我想象我的服务可以返回“成功”,然后继续自行处理,但我不确定这是否可能。由于我的处理对时间敏感,因此开始新请求的后端处理是理想的选择,因此等待时间很短。
还有其他想法吗?或者其中一种听起来更可取?
我认为第一个是唯一可能的解决方案。第二是非常糟糕的设计。假设您处理每个请求的时间为 1 秒,平均 1 秒内有 2 个请求进来。你很快就会耗尽资源(因为会使用越来越多的线程)
第一个很好,因为您可以完全控制如何存储和处理请求。好的设计是将 Web 服务作为前端,只回答“成功”并将请求排队。作为持久存储,我推荐 MSMQ 或数据库。然后创建一个服务应用程序,该应用程序将具有线程池并从队列(db)中进行选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)