如何开发Windows计划任务?

时间:2009-01-07 00:59:11

标签: .net sql-server scheduled-tasks

我需要一个将每日数据编译成PDF的流程,该PDF将附加到电子邮件中。我已经使用MSSQL在正在开发的应用程序中发送电子邮件,并希望继续使用MSSQL作为电子邮件处理器。

在我的研究中,我发现可以通过创建Windows服务来实现。但是,因为我真的只想让这个过程每天运行一次;保持一个永远活跃的Windows服务似乎有点矫枉过正。

我从未使用任务调度程序来运行自建应用程序。我想确保我以正确的方式去做。据我了解,我将不得不......

  1. 在Visual Studio中创建一个新项目(Project X)
  2. 程序(项目X)生成PDF并与MSSQL交互以发送电子邮件
  3. 构建(项目X)到EXE
  4. 使用任务计划程序安排EXE以我需要的任何计划运行。
  5. 我应该关注哪些安全方面?只有我能想到的是加密我的MSSQL连接字符串;当然,将EXE保留在Web应用程序所在的Web可访问目录之外。

    提前感谢您的帮助/确认,因为我知道有些人会认为这是一个愚蠢的问题。

3 个答案:

答案 0 :(得分:1)

我唯一能看到你没有考虑的是任务计划程序将运行你的EXE的身份,但是看起来你似乎控制环境中的所有东西不应该太过关注。

答案 1 :(得分:1)

正如Esteban所说:这只是在您的帐户下运行,您是否会继续登录该计算机?如果是这样,那么 是您最大的安全风险。您可以使用屏幕保护程序来强制登录提示,这绝对不是一次注销的安全性。但是,我怀疑这会被视为“最佳做法”。

我会考虑构建一个每天只唤醒一次的Windows服务。它们确实不是很难构建,尽管你需要确保有一个好的测试机制(一个独立的类,你编译成一个可单元测试的dll是一个好主意),因为一旦它们运行就测试它们非常困难。但是,不要让服务应用程序的“神秘感”或资源使用的想法让你失望。你会惊讶他们有多容易。就资源而言......你正在花费更多的资源来保持一个完整的Winforms应用程序运行!

答案 2 :(得分:0)

如果要构建Windows服务,可以将其设置为在服务器(数据库所在的服务器)启动时启动。我有一个外部跟踪系统,可以发送电子邮件,可能在一个单独的数据库中。服务器启动时,您的服务也会启动。服务检查今天是否发送了电子邮件。如果没有,建立电子邮件,发送电子邮件,然后在日志中标记它(我假设的数据库表)。然后让服务休眠24小时,然后再次检查(使用事件)。重复。