将WF作为Windows服务托管

时间:2011-10-05 16:50:18

标签: workflow-foundation-4

我正在尝试构建一个简单的Windows工作流来监视入站文件的目录,并使用Windows WF 4.0进行一些数据库更新。目前,我计划构建一个“WCF工作流服务”并将其作为一个全天候运行的“Windows服务”(每日服务关闭和启动)托管。

未来我计划使用ASP.NET / WPF应用程序来使用此服务来创建基本的仪表板类型的东西。

考虑到在Windows服务上托管WF的文件进行目录轮询的想法,这似乎是个好主意吗?这可能是什么缺点?

如果有任何弊端,请提供建议,还是可以通过更好的方式实现?

1 个答案:

答案 0 :(得分:0)

我实际上是这样做的,但它比你想象的要复杂一点,如果可能应该避免。

你不应该在活动中阻止;如果预期它是一个长时间运行的Activity,它等待来自外部的输入(例如FileSystemWatcher事件),则工作流应该自行空闲并等待从外部唤醒。

我是如何做到这一点的,我创建了一个托管FileSystemWatcher的工作流扩展。一旦活动准备好观察文件,它就会创建一个书签并将其传递给扩展名。

扩展然后启动FSW,保留书签。

当触发FSW事件时,扩展程序恢复书签,传入包含该事件详细信息的对象。活动完成了活动所需的内容,然后自行重新安排。

通常我不会这样做,但我有一些要求迫使我使用WF4来实现这个目标。如果我不必使用WF4,我会在服务中启动FSW并消耗事件。

除非您希望您的配置必须非常灵活,详细说明您对FSW事件的处理方式,并期望在部署服务期间相对经常更改,否则我将跳过WF4。