我正在使用.NET编程的单片系统中工作,现在我试图通过分离登录新服务以及Web和移动通知来重新设计体系结构。 现在,我要做出正确的决定,以选择用于消息队列的最佳服务,最后,我将Hangfire和服务总线用于队列和推送通知进行比较。
搜索后,我发现Hangfire是一项免费服务,它与ASP.NET集成在一起,而Bus服务是Microsoft的天蓝色服务,对我们来说价格是合理的。 所以问题是我的解决方案的最佳实践是什么?或者,如果我想推荐使用执行即发即忘工作和推送通知的服务的建议。 选择时要考虑性能和价格。
答案 0 :(得分:1)
我将列出Azure Web作业,Azure Scheduler和Hangfire之间的所有优缺点,然后您可以确定要使用哪一个。
Azure WebJobs
开发与部署
Azure WebJobs是运行作业的非常有效的方法,因为它们只是控制台应用程序。许多开发人员都对开发经验感到满意,并且您无疑可以完成。另一个优势是这些作业可以通过执行exe在本地运行。
部署过程适合我们作为团队采用的git策略。如果作业存在于解决方案中,它将自动添加到App Service中。我们还有两种工作可供选择,连续工作和计划工作(Cron)。
生产
Azure WebJob体验是一种愉快的体验。控制台输出显示在Azure门户中的工具中,可以洞悉正在发生的事情。
我们发现Azure WebJobs的问题如下:
连续作业在所有实例上运行,如果您通过队列触发作业,而不是在任何其他情况下触发作业,则很好。 计划的作业在同一App Service中的单个实例上运行。认为滑块。如果您在区域(东部和西部)之间平衡了相同的App Service负载,则计划作业会带来问题。相同的计划作业可以在两个区域中同时运行两次。 无法将乔布斯彼此联系起来。如果一个需要在另一个启动之前运行,则需要正确计时。 如果这些都不是问题,则Azure WebJobs是一种合适的方法。您可以通过编写自定义逻辑来解决其中的某些问题,但这可能会带来更多问题。
Azure Scheduler
Azure Scheduler是用于云的任务计划程序。它可以执行适合Windows Azure的操作:
开发和部署
将任务写入控制台应用程序或编写HTTP终结点以执行操作时,开发经验类似于Azure WebJob。
关于设置计划任务,当前有两个选项:
手动进行。
通过Azure资源管理器(ugh)自行对其进行自动化。 从技术上讲,您无法在本地测试Azure Scheduler,但可以模仿其行为。我想可以,对吧?
生产
安装完成后,我们发现Azure Scheduler可以可靠地工作并且如广告中所述。当我们通过负载平衡器前面的TLD触发执行时,它解决了Azure WebJobs遇到的负载平衡器问题,并且它可以正常工作。
注意:Azure Scheduler的免费层上没有安全性。标准套餐的费用为每月15美元。
空中射击
Hangfire是一个集成的作业调度程序,旨在在多种托管环境中工作:ASP.NET和控制台应用程序。它支持.NET 4.5+和.NET Core。
开发和部署
Hangfire在本地的工作方式与生产环境相同。它是应用程序的一部分,执行作业的方式相同。它支持多个后备存储,例如SQL Azure,Redis等。
由于它是应用程序的一部分,因此可以使用我们的方法进行部署,而无需进行任何更改。就是这样!
Hangfire还支持Azure WebJob当前不提供给我们的许多其他类型的工作:即发即弃,继续工作和逻辑重试。
生产
我们已经进行了初步测试,发现Azure WebJobs和Scheduler所存在的问题不存在。由于我们使用SQL Azure作为后备存储,因此我们使用哪个区域进行负载平衡都没有关系。由于随附的仪表板信息非常丰富,因此很容易知道发生了什么。
从定价角度来看,hangfire会便宜一些。
我希望它可以帮助您做出决定。