离散 .NET 中间件处理器与从 IIS 生成新进程

Discrete .NET middleware processor vs spawning a new process from IIS

我有一个 4 层 .NET 应用程序,它包含一个

工作流程很简单:SL5 客户端向rest 服务发送请求,rest 服务只是将其存储在数据库中。

windows 服务在定期轮询数据库以获取新记录时检测新记录并尝试相应地处理它们。完成后,它会更新数据库中的记录及其状态。

与此同时,SL5 客户端还定期轮询数据库以查看记录是否已被处理。当它们是时,结果将被检索并呈现在屏幕上。

所以这里的问题是:

  1. 在新的离散进程(直接从 Web API 控制器中生成相同的处理代码(目前在 windows 服务中)与保持原样有区别吗在 windows 服务中?

除了删除 windows 服务中发生的持续数据库轮询外,它还大大简化了处理,因为它可以在请求从客户端到达时基于每个请求完成。但是还有其他缺点吗?可能是服务器或 IIS 的其他问题?

是的,有区别。

Windows 服务是异步处理的正确工具。操作可能需要很长时间而不会产生奇怪的效果。毕竟是连续的运行服务

另一方面,IIS 使用线程池处理请求。长 运行 任务有可能耗尽该线程池,因此这可能会导致问题,具体取决于您启动的后台任务的数量。此外,IIS 不保证长时间 运行 任务保持活动状态。如果网站被回收,这在 IIS 默认安装中经常发生,您的后台任务可能会终止。