2011-10-03 41 views
0

我目前有一个为客户拥有的每个帐户创建一个Windows wf 3.5实例的过程。为200请求优化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);      
       } 

目前创建的每个请求都是500ms左右,但给了200个账号,总时间> 1分钟。

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

请告诉我是否还有其他事情可以做,以加快速度。

回答

0

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

如果您的项目是可行的,那么您应该考虑将它重新写入WF4。 WF4的运行时引擎是一个完整的重写版本,对于大型+快速工作流程非常重要。有关WF3.5和WF4运行时引擎的速度比较,请参见http://msdn.microsoft.com/en-us/library/gg281645.aspx

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