3

就编程而言,我有点初学者。看着堆栈溢出,我还没有找到任何可以完全回答我的问题的东西。我创建了一个 C# 控制台应用程序,用于将 XML 文件推送到我无法控制的 Web 服务。它通过创建一个 http webrequest 来做到这一点。该服务可能会在 windows server 2008 或 win 7 变体上运行。开发是在 VS 2010 中完成的。我的最终目标是每天运行该程序两次,用户参与度极低。有人告诉我,服务是做到这一点的最佳方式。我知道服务不接受用户输入,并且输出通常是日志文件。我的控制台应用程序不接受用户输入,但必须具有 CRUD 文件的能力。因为它会创建一个 XMl 文件,然后将其读取到 Web 请求中。

我有两个问题:

问题 1:我希望此服务每 12 小时调用一次应用程序,使用服务来确定何时运行应用程序是否更可靠/更好的做法?或者使用windows的内置调度程序,或者像quark这样的.net解决方案?我正在寻找可靠性,以及很少的用户参与。一种一成不变的交易。

问题 2:对于转换我的程序,建议的最佳做法是什么?信息:我之前创建了一个空的 Windows 服务,我想将我的应用程序折叠到其中。(这是通过教程完成的,该服务包含服务所需的所有内容,但它没有做任何事情......但是!OnStart、OnStop、安装程序等)最好的方法是什么?我应该在服务的 OnStart() 方法中调用我的应用程序吗?我们应该将应用程序作为 dll 添加到服务中。并不是我认为我做不到。这只是我对此事的搜索似乎指出最好从服务开始并添加一些代码。我的目标是尽量减少转换此应用程序所需的代码。

谢谢你的帮助,克里斯

4

2 回答 2

2

问题一:个人一天跑两次好像是定时任务类型的操作

问题2:我将其描述为:或多或少地将主体static void Main(string[] args)放入OnStart方法中。然后还创建一个计时器OnStart,将在您的课程中调用触发器函数。但是后来我只是偶然发现了编写 Windows 服务的方式,所以我不能 100% 确定这个建议......

一个考虑因素可能是在此过程中任何失败的风险是什么?如果有可能发生未处理的异常,则服务将终止,并且需要特殊设置来重新启动它或完成要编码的错误处理。计划任务将始终在下一个触发间隔自动重试。

于 2012-11-06T23:25:05.543 回答
2

我喜欢由调度程序运行的独立程序,因为它们更容易编写和测试。

当服务必须一直运行时,服务会更合适......比如说监控某些东西。

于 2012-11-06T23:11:09.483 回答