【问题标题】:Best Practice: Converting an application to a service with a schedule最佳实践:将应用程序转换为具有计划的服务
【发布时间】:2012-10-26 23:25:32
【问题描述】:

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

我有两个问题:

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

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

感谢您的所有帮助, 克里斯

【问题讨论】:

  • 快速说明:C# 是 C-Sharp。仅供参考。
  • @JClaspill - 我“修正”了他蹩脚的幽默尝试。
  • 请不要在标题中输入关键字。
  • 为了将来参考,这是英镑符号 - £

标签: c# service xmlhttprequest


【解决方案1】:

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

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

【讨论】:

  • 我同意,在每次运行之间的 12 小时,服务一直运行并且什么都不做的开销只会减损。如果它需要每 6 小时运行一次,那可能是值得的,每 5 分钟服务肯定...可能取决于具体情况
  • 我同意这是一个好方法。它回答了我的第一个问题。至于我的第二个问题......如果需要服务,最好只从服务中调用应用程序。还是将应用程序重写为服务会更好?
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 2023-04-06
    • 2023-03-30
    • 2010-11-03
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 2015-08-17
    相关资源
    最近更新 更多