所以,这个问题已被提出很多问题,我已经看到了许多不同的答案,但对于我的情景来说,没有任何限制或绝对的答案。
_
我想做什么:
我们有一个网站,有一个用户社区。 p>
在网站的管理部分,有按钮可以运行以下功能:
通过电子邮件向所有用户发送我们的每周时事通讯[星期四下午4点],
消息用户当天的信息[每日下午6点],
通过facebook连接到Facebook [每日上午8点和下午6点],
等等等(很快就会有新的要求,但它们会遵循相同的原则)_
我想要做的就是自动运行这些功能,因此一名员工无需访问网站,登录,然后在设定的时间点击每个按钮。
即,实际上,让服务器在上述设定时间自动点击这些按钮。
_
我已经看到了使用内置计时器构建服务的建议,它将调用每个函数,或使用Windows任务调度程序,构建exe / com等,但我觉得它不应该是这么复杂。< / p>
我们已经编写了代码来实际执行.net网页中的任务,并使用一些自定义构建的类等。
我只是不知道如何在所需的时间自动调用这些函数。
_
服务器信息: 运行Windows Web Server 2008 R2(64位)的专用服务器
发展环境: Visual Studio 2010 SP1,使用.NET 4.0
_
提前感谢您的帮助。
Kindest Regards,
德尔
答案 0 :(得分:5)
将代码拆分为可以从Windows任务调度程序以及应用程序调用的单独的exes / dll是可行的方法。
当您运行的操作系统中存在调度程序时,重新发明应用程序内的调度程序是没有意义的。特别是因为你的应用程序是一个Web应用程序,它应该做web事情而不是服务器事物。
额外的优势在于您使应用程序更加模块化,更易于升级。
答案 1 :(得分:2)
根据定义,Web服务器会响应请求。这种基本设计以各种方式表现出来,例如应用程序池在一段时间不活动后关闭。出于这个原因,在Web服务器的上下文中执行与时间相关的代码并不是一个好主意,因为很难保证代码实际运行(没有跳过很多具有其他负面影响的箍) )。相反,外部时间相关机制应该向Web服务器发送请求以执行这些功能。
你说你不想使用Windows Scheduler或写一个外部exe,因为“它不应该这么复杂”;但是我没有看到计划任务调用Web服务有什么复杂。
答案 2 :(得分:0)
嗯,虽然我同意为Windows任务调度程序欢呼的其他答案,并且该网站与调度任务无关(它可以是输入参数的来源,而不是任务运行程序本身),您可以尝试使用调度库,如quartz.NET在后台安排并运行必要的流程。
答案 3 :(得分:0)
下载cURL - 命令行HTTP请求实用程序。使用任务计划程序中的此实用程序,使用执行功能所需的特定查询字符串来调用您的网页/ Web服务。
这不是非常安全 - 任何知道正确查询字符串的人都可能导致这些函数执行 - 但它给你一般的想法。在我看来,编写一个使用程序集直接执行功能的控制台应用程序会更安全。从任务计划程序调用控制台应用程序。