gpt4 book ai didi

asp.net - .net 解决方案中具有多个项目的 Hangfire

转载 作者:行者123 更新时间:2023-12-01 19:35:18 25 4
gpt4 key购买 nike

我希望将hangfire 实现到我的asp.net web api 和asp.net MVC 网站项目中。

我构建解决方案的方式如下:

Solution - My Solution
1: Model - (Project containing Entity Framework Objects and classes)
2: Services (Where I implement all my> business logic, changes etc.) This is where I will most likely make use of HangFire.

3: Web API (my asp.net api project)
4: Web UI ( mvc 5 Admin interface website)

项目 3 和 4 都使用 2:Services 项目来完成工作并调用执行业务逻辑的服务。这是大多数任务将被分拆的地方。

我将如何实现hangfire,以便它们各自的iis站点都可以使用相同的hangfire“实例”。但它显然会在关联的应用程序池上运行?

或者也许它不能那样工作,我必须让它在一个地方运行?

我有哪些选择,以及推荐的方法是什么?

最佳答案

对我来说最大的收获是,HangFire 在工作池关闭(即空闲超时)后不会继续,这无论如何都是我的核心问题,并建议更改服务器配置以永远不会关闭工作池。如果您的应用程序将持续使用 24/7,那么这对您来说不应该是问题,尽管您的工作池仍可能因各种原因而被回收,但对于会经历用户高峰和低谷的应用程序,那么您可能需要考虑进程外 HangFire 服务器。

我采取的方法是后者。我正在构建一个概念验证,它有一个 Windows 服务(使用 Topshelf 构建 - 强烈推荐这样做),该服务托管 HangFire 服务器(和仪表板)、共享核心库和客户端(这将是我的WebAPI 已投入生产,但它是用于 PoC 的 WPF 应用程序)。客户端使用共享库中的类实例将作业排入队列,HangFire 服务器也可以访问该共享库。

根据您的描述,我假设 WebAPI Controller 操作从服务层调用类中的相应方法?如果是这种情况,那么我会选择与我的类似的解决方案,其中 HangFire Windows 服务可以根据需要访问您的服务和模型。

如果您的应用程序流量很大并且工作池回收不会打扰您,那么我会直接在您的 WebAPI 中托管 HangFire 服务器。

关于asp.net - .net 解决方案中具有多个项目的 Hangfire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34416135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com