Hangfire在.net解决方案中有多个项目



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

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

解决方案-我的解决方案
1:模型-(包含实体框架对象和类的项目)
2:服务(我实现所有>业务逻辑、更改等的地方)这是我最有可能使用HangFire的地方。

3:Web API(我的asp.net API项目)
4:Web UI(mvc 5管理界面网站)

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

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

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

我的选择是什么?此外,建议的方法是什么?

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

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

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

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

最新更新