0

所以,这个问题被问了很多,我看到了很多不同的答案,但对于我的场景来说,没有什么是有限或绝对的。

_

我想做的事:

我们有一个网站,有一个用户社区。

在网站的管理部分,有一些按钮可以运行以下功能:

通过电子邮件向所有用户发送我们的每周通讯 [星期四下午 4 点],

向用户发送当天的信息 [每天下午 6 点],

通过 facebook connect [每天上午 8 点和下午 6 点] 发布到 facebook,

等等,等等(很快也会有新的要求,但它们将遵循相同的原则)

_

我要做的就是自动运行这些功能,这样员工就不需要去网站,登录,然后在设定的时间点击每个按钮。

也就是说,实际上,让服务器在上述设定的时间自动单击这些按钮。

_

我已经看到了使用内置计时器构建服务的建议,该计时器将调用每个函数,或使用 Windows 任务调度程序,构建 exe / com 等,但我直觉它不应该这么复杂。

我们已经编写了代码来实际执行 .net 网页中的任务,并使用一些自定义构建的类等。

我只是不知道如何在需要的时间自动调用这些函数。

_

服务器信息:运行 Windows Web Server 2008 R2(64 位)的专用服务器

开发环境:Visual Studio 2010 SP1,使用 .NET 4.0

_

预先感谢您的帮助。

最亲切的问候,

德尔

4

4 回答 4

5

将代码拆分为可以从 Windows 任务调度程序以及您的应用程序调用的单独的 exe/dll 是可行的方法。

当您正在运行的操作系统中存在调度程序时,在您的应用程序中重新发明调度程序是没有意义的。特别是因为您的应用程序是一个 Web 应用程序,它应该做 Web 事情而不是服务器事情。

额外的好处是您使您的应用程序更加模块化并且更容易升级。

于 2012-04-10T17:38:42.810 回答
2

根据定义,Web 服务器响应请求。这种基本设计以各种方式表现出来,例如应用程序池在一段时间不活动后关闭。出于这个原因,在 Web 服务器的上下文中执行与时间相关的代码并不是一个好主意,因为很难保证代码会真正运行(不跳过许多具有其他负面影响的环节) )。相反,外部时间相关机制应向 Web 服务器发送请求以执行这些功能。

您说您不想使用 Windows 调度程序或编写外部 exe,因为“它不应该这么复杂”;但我看不出让计划任务调用 Web 服务有什么复杂之处。

于 2012-04-10T17:40:10.130 回答
0

好吧,尽管我同意为 Windows 任务调度程序欢呼的其他答案,并且该网站与调度任务无关(它可以是输入参数的来源,而不是任务运行程序本身),但您可以尝试使用诸如quartz.NET 之类的调度库在后台安排和运行必要的进程。

于 2012-04-10T17:42:13.010 回答
0

下载 cURL - 一个命令行 HTTP 请求实用程序。使用任务调度程序中的此实用程序使用执行功能所需的特定查询字符串调用您的网页/Web 服务。

http://curl.haxx.se/

这不是很安全 - 任何知道正确查询字符串的人都可能导致这些函数执行 - 但它为您提供了总体思路。在我看来,编写一个使用您的程序集直接执行您的功能的控制台应用程序要安全得多。从任务计划程序调用控制台应用程序。

于 2012-04-10T18:16:46.063 回答