Windows服务与简单程序

时间:2011-03-24 20:44:45

标签: c# asp.net sql windows web-services

在我解决问题之前,让我为每个人提供一个支持。我的公司为许多客户提供网站,我的公司还将一些工作合同交给另一家公司。 因此,当我们首先建立一个包含我们客户所有信息的网站时,我们会将这些信息传递给我们签约的其他公司,我们三个人拥有相同的数据。问题是,一旦网站启动并运行,我们的客户将更改一些数据,当他们这样做时,我们应该能够更新我们的合同公司。 我们将数据传输到签约公司的方式是使用Web服务(httppost,xml数据)。现在我的问题是编写程序的最佳方式是什么,每当我们的客户更改某些数据时,该程序会将更新的数据发送给签约公司。

1)在我的代码中编写一个带有计时器的Windows服务,每30分钟左右连接数据库并查找所有更改并将其发送给签约公司 2)写出与#1相同的代码(没有定时器),但这次使它成为一个简单的程序,让Windows调度程序每30分钟唤醒一次 3)您可能有任何其他建议

我可以使用的技术是VS 2008,SQLServer 2005

5 个答案:

答案 0 :(得分:2)

计划任务是要走的路。 Jon写了一个很好的总结,说明为什么服务不适合这类事情:http://weblogs.asp.net/jgalloway/archive/2005/10/24/428303.aspx

答案 1 :(得分:1)

服务易于创建和安装,更具“专业”感,所以为什么不这样做呢?使用非服务EXE当然也会工作,并且稍微容易运行(权限等),但我认为两者之间的设置差异几乎可以忽略不计。

答案 2 :(得分:0)

一种可能的解决方案是在数据表中添加时间戳列。

完成此操作后,您可以在每个表格中有一个条目,其中包含您的合同公司的最后一次收集时间。他们可以提取自上次以来的所有记录并相应地更新其记录。

答案 3 :(得分:0)

Windows服务更加自包含,您可以轻松地将其配置为在操作系统启动时自动启动。您可能还需要创建其他配置选项,以及立即触发同步的某种方法。 它还将为您在未来增加服务功能提供更多空间。

虽然独立应用程序应该更容易开发,但是您依赖于Windows调度程序来始终执行任务。我的经验是,使用Windows调度程序更容易弄乱它并使其无法运行,例如在重新启动操作系统但没有用户登录的情况下。

如果您想要更专业的方法,请使用该服务,即使这可能意味着更多的工作。

答案 4 :(得分:0)

在这种情况下,Windows服务更有意义。想想服务器重启后会发生什么:

使用Windows应用程序,您需要让某人重新启动应用程序,或手动将快捷方式复制到启动文件夹以确保应用程序启动

或,

使用Windows服务,您可以将其设置为自动启动并忘记它。当机器重新启动时,您的服务将启动并继续处理。

还有一个考虑因素,当出现错误时会发生什么? Windows应用程序可能会显示错误对话框并在继续之前等待输入;而服务会在事件日志中记录错误并继续。