【问题标题】:what to use for repetitive (daily, weekly, monthly) tasks ? Workflows, Windows Services, something else?什么用于重复(每天、每周、每月)任务?工作流、Windows 服务,还是其他?
【发布时间】:2010-04-28 15:28:54
【问题描述】:

我已经编写 Windows 服务有一段时间了,对于需要每天运行、每周几次、每月一次等运行的事情,它们似乎总是能正常工作,但我最近一直在考虑使用Windows 工作流基础。

但是,我不确定它们如何在没有容器应用程序(例如 SharePoint)的服务器上运行?我以前使用过 Sharepoint 工作流,但我总​​是遇到很大的问题,一开始是工作流架构实现中的错误(睡眠和延迟问题),后来当它们最终开始工作时,它们很难管理和更改。

另一方面,Windows 服务总是很容易实现,很容易为它们创建设置和安装它们,而且它们总是非常有弹性(它们经常工作几个月而没有崩溃或出现其他问题)。

你有什么推荐的?请记住,我们是在 .NET 中工作的(版本没问题,如果 4.0 在这个主题上带来了一些新的东西,我们可以使用它)。

【问题讨论】:

    标签: .net windows windows-services workflow workflow-foundation


    【解决方案1】:

    您是否查看过 Windows 计划任务?它不是新的,但它允许您构建一个可以在特定日期/时间运行的应用程序。调度器提供了很多类似于windows服务的自定义。 MSDN Article

    【讨论】:

    • 这是我使用的,因为它会为您安排日程。
    • 调度程序在 Windows XP/Server 2003 之后获得了大部分的可配置性,因此这种方法在 Vista/7 和 Server 2008/R2 上更加有效。
    【解决方案2】:

    我们经常选择使用 Windows 服务。对于重复和计划任务,我们使用Quartz.Net 库。当这些任务是冗长的阻塞操作时,我们还合并了SmartThreadPool 库。我们让 Quartz 创建一个作业并将其粘贴到 SmartThreadPool 中执行(因为我们遇到了 Quartz 中长时间运行的作业的误触发问题,也因为我们有时想将不同类型的作业分离到不同的线程池中执行)。

    【讨论】:

    • 感谢对 Quartz.Net 和 SmartThreadPool 的引用。这是我一直在寻找的东西。
    • 您有关于在 Quartz.NET 中使用 SmartThreadPool 的示例/博客文章吗?
    • 不,很遗憾没有。希望有一天(我发现我有很多关于开发的东西要写博客)。但这不是什么花哨的东西。我只是让 Quartz 作业只在线程池中安排“真正的”作业。我将东西包装在应用程序特定的界面之类的东西中,但它的实质就像我说的那样,让 Quartz 工作只不过是在其他地方安排“真正的”工作。 SmartThreadPool 也非常简单,比 Quartz 更简单。
    • 啊,酷,听起来很简单。感谢您为我指明正确的方向。
    猜你喜欢
    • 2017-09-26
    • 2014-11-24
    • 1970-01-01
    • 2018-06-20
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多