gpt4 book ai didi

c# - asp.net中web应用程序需要的调度作业思路

转载 作者:行者123 更新时间:2023-11-30 13:58:46 25 4
gpt4 key购买 nike

我在 asp.net 中编写了一个 Web 应用程序。它有一些用户角色。有 3 个角色,分别是经理、会计和员工。员工在表格中写下他们的费用并将其发送给经理。当经理批准后,它会被发送给会计来支付。我需要有一个想法,当经理在 48 小时内不批准员工的费用时,它应该自动发送一封电子邮件到经理的邮箱。

我认为我可以编写另一个小型控制台应用程序来通过每小时检查来处理这个问题。但这会浪费资源并降低性能。

我需要一个好主意来处理这个问题。 我该怎么办?

最佳答案

有几个选项,但如果我是你,我会选择第一个或第二个选项。

控制台应用和调度程序

我会创建每次运行时为您执行检查的控制台应用程序。然后,我将使用 Windows Scheduler 每天(00:05)或每小时运行一次(如果您愿意的话)。这样 Windows Scheduler 守护程序将每小时启动一次,其余时间您的应用程序不运行。

检查这个Microsoft link查看如何在 Windows 中创建计划任务。

Restful Web 服务和调度程序

正如@marapet 回答中所建议的那样,拥有一个允许您执行此操作的 RESTful Web 服务而不是控制台应用程序会给您带来将所有代码都放在您的 Web 应用程序中的优势。

与上一个类似,您应该只调用 restful uri 来完成您的操作。作为可能的缺点,您必须确保最终用户无法访问该 uri。在通常的架构中(Web 服务器 --> 应用程序服务器 --> 数据库),这种 Restful 服务应该在应用程序服务器中,远离最终用户访问。

window 服务

另一种选择是创建一个一直运行的 Windows 服务 并检查时间本身,以便每小时执行一次作业(可能使用 Quartz 或类似工具)。但这不符合您的性能要求。

对性能的影响会很小,因为您的服务应该每分钟检查一次,看看一个小时是否已经过去,是时候完成它的工作了。任务非常简单。

优点是windows服务比计划任务更容易控制和监控

数据库作业

还有另一种选择...如果您的应用程序使用 SQL Server,您可以有一个每天或每小时运行的 t-sql 作业。除非你真的有性能问题,否则我不会推荐这个选项。

这样做的问题是您将拆分代码的逻辑和职责。 future 的开发者或管理员会发现很难维护您的应用。

关于c# - asp.net中web应用程序需要的调度作业思路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15477487/

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