C#我最好的选择是什么?服务/应用/多种应用

时间:2009-10-12 08:57:15

标签: projects-and-solutions application-design

我正在开发一种解决方案,需要在不同时间完成许多任务。例如:

  • 任务1 - 监控邮箱,处理邮件项目
  • 任务2 - 监控邮箱(不同文件夹),处理邮件项目
  • 任务3 - 生成PDF报告
  • 任务4 - 监控文件夹,当新文件到达时,通过电子邮件将文件作为附件分发。

我已经实现了解决方案,但是,它基本上只是一个快速解决方案来运行。现在它已经启动了,我想重新审视当前的设置并对其进行改进,以使其尽可能高效。

对于当前的解决方案,我为每个不同的任务创建了一个单独的应用程序,并使用任务计划程序在特定时间执行它们。

  • 任务1是一个控制台应用程序,每5分钟运行一次计划任务
  • 任务2是一个控制台应用程序,每5分钟运行一次计划任务(第一次应用程序后2分钟,这是因为任务1将电子邮件移动到任务2正在监视的文件夹中)
  • 任务3每天凌晨5点作为计划任务的runonce应用程序运行
  • 任务4正在无限运行。

我的问题是,这似乎是解决此类应用的合理方法吗?作为服务而不是应用程序,某些任务看起来更好吗?

2 个答案:

答案 0 :(得分:2)

我想我可能会使用一个可以轻松配置来运行各种任务的服务(如果你想稍后将它们分开,你可以这样做)。

安排特定的应用程序是可以的,当然也是一种更简单的工作方式,但这种感觉更像是对我的服务。当然,如果你从事物的“调用”方面分离出“做事”逻辑,你可以轻松地从一个切换到另一个。

这一决定不太可能改变事物的效率方面。您是否有充分理由担心目前的整体效率?您是否已分析过您的应用程序以找出出现瓶颈的地方?我会说他们不太可能出现在调度方面。

答案 1 :(得分:1)

服务听起来像是接近这个的正确方法。

长时间运行的子任务(例如PDF生成)非常适合使用异步编程方法执行,即使用在完成时回调到父线程的工作线程。这样,监视任务可以独立于动作任务运行。