在我解决问题之前,让我为每个人提供一个支持。我的公司为许多客户提供网站,我的公司还将一些工作合同交给另一家公司。 因此,当我们首先建立一个包含我们客户所有信息的网站时,我们会将这些信息传递给我们签约的其他公司,我们三个人拥有相同的数据。问题是,一旦网站启动并运行,我们的客户将更改一些数据,当他们这样做时,我们应该能够更新我们的合同公司。 我们将数据传输到签约公司的方式是使用Web服务(httppost,xml数据)。现在我的问题是编写程序的最佳方式是什么,每当我们的客户更改某些数据时,该程序会将更新的数据发送给签约公司。
1)在我的代码中编写一个带有计时器的Windows服务,每30分钟左右连接数据库并查找所有更改并将其发送给签约公司 2)写出与#1相同的代码(没有定时器),但这次使它成为一个简单的程序,让Windows调度程序每30分钟唤醒一次 3)您可能有任何其他建议
我可以使用的技术是VS 2008,SQLServer 2005
答案 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应用程序可能会显示错误对话框并在继续之前等待输入;而服务会在事件日志中记录错误并继续。