1

我工作的公司正在考虑采用和实施托管在 IIS 中的 Workflow Foundation 来处理数据。我们仍在设计我们的问题域,但有人担心长时间运行的线程在 IIS 内部并不理想。以下是我们所做的一些假设,因为 Workflow 对我们的团队来说仍然是一项新技术:

我们正在区分“长时间运行的进程”和“长时间运行的工作流”,其中长时间运行的进程正在积极消耗 CPU,而长时间运行的工作流只是简单地保留了无法确定的时间,等待额外的请求来完成它的工作.

我的问题是:创建一个长时间运行的线程作为 IIS 中托管的窗口工作流的一部分是一种好习惯,还是我们应该通过传统的 Windows 服务在 IIS 之外实现长时间运行的进程?

4

1 回答 1

1

使用 AppFabric 只需坚持你的循环(我假设它必须是一个循环,因为否则 Receive 或 Delay 将在空闲时卸载,因此不会发生长时间运行的进程),启用实例控制并将未处理异常的操作设置为 Abandon(恢复WF 实例到最后一个持久点)。

在应用程序池中,禁用回收、快速失败等。这是否是好的做法取决于很多事情,例如部署问题、是否要使用 wcf 调用与进程交互、是否要轻松扩展等.. 就我个人而言,我不喜欢 Windows 服务的麻烦,而且我认为您总是必须处理意外的进程终止,那么为什么不假设它会发生并使用安全的持久点走 IIS 路线呢?

于 2013-03-07T15:37:13.813 回答