【发布时间】:2018-12-25 16:20:56
【问题描述】:
我在 .net 4.6.2 中有一个安静的微服务(web api),我想在每次调用某些端点进行一些数据库清理工作后调用一个 fire and forget 函数。我不想使用 Task.Run,我希望有一个非常可靠的专用进程来完成这项工作。
我发现了很多关于如何在 .net core 中使用 IhostedService 来执行长时间运行的后台任务的文章和讨论。
- Implement background tasks in microservices with IHostedService and the BackgroundService class
- ASP.NET Core background processing with IHostedService
- Background tasks with hosted services in ASP.NET Core
但是,我在 .net 框架中没有找到太多关于等效项的信息。那是 IRegisteredObject 吗?有人可以帮助我或指导我找到正确的资源。
注意:我们将 API 作为 Windows 服务托管,不使用 IIS
这是我第一次在这里提问,如果问题不够清楚,敬请见谅。
【问题讨论】:
-
你找到解决这个问题的方法了吗?
-
并非如此。我们将一条记录插入数据库队列并使用 Windows 服务来处理记录并完成工作。
-
这是hangfire.io 的完美用例。这可以在 IIS 或 windows 服务中运行。 docs.hangfire.io/en/latest/background-processing/…
-
如果您使用的是微服务方法,那么按照微服务架构(我认为的方式)将其拆分为一个单独的进程。将消息发布到消息总线并拥有处理消息的服务。将它添加到现有的 API 感觉少了很多微服务,而更像是 IMO。
-
在我们的应用程序中,我们有很多后台任务。当用户执行一些操作时应该开始:创建记录,更新记录等。这个工具帮助了我们很多。 hangfire.io
标签: c# multithreading rest windows-services microservices