2009-11-30 61 views
3

似乎有不:(在Asp.Net应用程序中应该运行多少个工作流运行时?

这里有几个,我面临的挑战是许多Windows Workflow Foundation的大师那里:

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

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

哪些利弊在上述选择中做一个或另一个NS?

有任何意见或建议,欢迎,

感谢,

卡伦

回答

1

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

对于网络托管的工作流程,您确实需要SqlWorkflowPersistenceService。 IIS希望能够回收应用程序池,并对应用程序产生最小的影响。因此,您需要闲置的工作流程才能保留,以便在回收过程中继续存在。

在类似的说明中,您应该使用可以很好地利用ASP.NET线程的ManualWorkflowSchedulerService,它也非常方便,可以通过单个工作流执行对响应请求的端到端处理线。请确保包含useActiveTimers="true"属性,以便延迟活动起作用。

与上述相一致,您需要确保任何活动工作流不会比应用程序池的关闭时间限制花费更长的时间来完成或闲置。否则,在回收站点IIS可能会强制流程在工作流程持续之前终止。

至于启动和停止工作流程,它很难再看到一个场景,您不仅希望它在应用程序启动时启动并继续运行。我猜如果你有一个永不闲暇的工作流程,只是运行从开始到结束你只能偶尔运行这样的工作流程,那么启动运行时间和结束它可能会更简单。不过即使这样可能会变得麻烦,我不会在打开应用程序开始时就打扰它并完成它。

+0

@Anthony:谢谢你的回复。我已经配置了将SqlWorkflowPersistenceService和ManualWorkflowSchedulerService添加到运行时; IIS回收问题是一个非常重要的问题。当应用程序池被回收时是否可以拦截事件? – 2009-12-01 15:18:29

+0

没有具体的回收事件。我能想到的最接近的一点是应用程序在再循环时再次启动,但与当前正在执行的任何工作流程不同。我只能确定关机超时很好地消除了工作流程的运行时间。如果时间过长,那么可能有些工作不属于Web过程。 – AnthonyWJones 2009-12-01 16:54:22

1

应该有多少的工作流运行时是一个Asp.Net MVC应用程序运行?
每个应用程序之一,除非你需要更多的可扩展性的目的(太多请求)

应当多工作流运行时启动和停止?
通常情况下,每个应用程序实例

亲的和反对的是平凡的一次,就可以更好地与更多的会话请求和实例规模,但它需要更多的开销来管理他们所有。

最好的办法就是使用足够的东西来满足您的需求,并在必要时进行增长。

+0

@Robert:感谢您的快速回复!你在asp.net环境中做了很多WF吗? – 2009-11-30 18:51:38

+0

没问题,我已经用了一点,我可能只学到足够让自己陷入严重的麻烦。希望稍后我会有机会使用它。 – 2009-11-30 19:05:38

+0

这就是我试图阻止自己进入“严重麻烦”的意思。我正在开发的这个项目计划在无状态Web环境中广泛使用WF。希望我能通过WF找到实现该项目最佳解决方案的途径。 – 2009-11-30 19:13:56

相关问题