在Asp.Net应用程序中应该运行多少个工作流运行时?

时间:2009-11-30 18:35:49

标签: c# asp.net-mvc workflow-foundation

似乎没有很多Windows Workflow Foundation专家:(

以下是我面临的几项挑战:

在Asp.Net MVC应用程序中应该运行多少个工作流运行时?每个应用程序,每个会话或每个请求一个?

工作流运行时应该多久启动和停止一次?每个应用程序实例一次,每次会话一次或每次请求一次?

在上述选项中做一个或另一个的利弊是什么?

欢迎提出任何意见或建议,

谢谢,

库伦

2 个答案:

答案 0 :(得分:1)

在Asp.Net MVC应用程序中应该运行多少个工作流运行时?
每个应用程序一个,除非您为了可伸缩性目的需要更多(请求太多)

工作流运行时应该多久启动和停止一次?
通常,每个应用程序实例一次

专家和骗子是微不足道的,您可以使用更多的会话请求和实例进行更好的扩展,但是管理它们需要更多的开销。

最好的办法就是尽可能地使用你需要的东西,并在必要时再增长。

答案 1 :(得分:1)

通常,每个应用程序只运行一个工作流运行时。可以定义多个,并且可能存在一些复杂的情况,这是可取的但是极不可能。我看不到任何情况,即同一配置的多个运行时将在同一进程中运行。

对于网络托管工作流程,您确实需要SqlWorkflowPersistenceService。 IIS希望能够回收应用程序池,并对应用程序产生最小的影响。因此,您需要保持闲置的工作流程,以便它们能够在这种循环中存活下来。

在类似的说明中,您应该使用与ASP.NET使用线程相关的ManualWorkflowSchedulerService,它在通过工作流程执行对响应的请求的端到端处理方面也非常方便在一个线程上。请确保包含useActiveTimers="true"属性,以便延迟活动有效。

根据上述内容,您需要确保任何活动工作流不会比应用程序池的关闭时间限制更长时间地完成或空闲。否则,在回收IIS时可能会强制进程在工作流持续存在之前终止。

至于启动和停止工作流程,再次很难看到您不希望它在应用程序启动时启动并保持运行的情况。我想如果你有一个永远不会闲置但只是从头到尾运行的工作流程你只是偶尔运行这样的工作流程,那么启动运行时可能会更简单,之后会结束。然而,即使这样可能会变得混乱,我也不会在app启动时启动它并完成它。