优化Windows WF 3.5实例创建200请求

时间:2011-10-03 10:21:46

标签: windows workflow-foundation

我目前有一个流程可以为客户拥有的每个帐户创建一个Windows wf 3.5实例。

foreach (Account acct in Customer.Accounts)
                {
                    Dictionary<string, object> param = new Dictionary<string, object>();
                    param.Add("account", acct);

                    //create the workflow instance
                    WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(AcctWorkflow), param);

                    //start and run the workflow
                    instance.Start();
                    scheduler.RunWorkflow(instance.InstanceId);                    
                }

目前每个请求的创建时间约为500毫秒,但是给定200个帐户,总时间&gt; 1分钟。

这是在用户点击创建请求按钮时实时创建的。

请告知我是否还有其他事情可以让它更快。

1 个答案:

答案 0 :(得分:0)

我不知道可以为WF3.5做些什么来加快速度。 WF3.5运行时引擎有许多固有的“缺乏优化”问题,这些问题无法修复或解决(特别是循环结构的方式,例如While活动,已实现)。

如果您的项目可行,您应该考虑将其重新写入WF4。 WF4的运行时引擎是一个完整的重写,强烈考虑大型+快速工作流程。有关WF3.5与WF4运行时引擎的速度比较,请参阅http://msdn.microsoft.com/en-us/library/gg281645.aspx

即使无法将工作流程重写为WF4,您也应该使用4引擎(通过WF4 Interop活动)更新以运行3.5工作流程。与使用WF3.5引擎相比,这仍然可能使您的速度加倍。请参阅上面链接页面的底部,以便使用Interop活动进行比较。