WF3设计时性能II

译自:http://blogs.msdn.com/kushals/archive/2010/04/07/wf3-design-time-performance-ii.aspx

 

最近,一个客户的设计器在启动的时候非常慢,他的项目只是一个中型的,因此性能的下降是令人非常费解的。

为了找出是哪里的问题,我使用附加到进程方式将含有工作流设计器的实例附加到VS中,并且打开所有异常,然后我尝试启动工作流设计器发现…

我得到了数百个文件IO找不到的异常,难怪性能会这么慢。

我尝试重新编译项目,并检查客户是否少了什么。但是项目生成成功,没有任何错误。是什么导致设计器的性能这么慢呢?

问题如下:
如果工作流中的活动依赖程序集A(使用其中的一些类型),程序集A依赖于程序集B。在设计时,当你装载工作流的时候,活动实例就会被创建。在活动实例创建其间,CLR想要确保活动程序集以及所有他依赖的程序集都能被装载(A和B),为了这个目的,VS的类型解析服务会根据活动程序集来查找A和B,然后还会查找GAC。

如果在这些路径中仍然找不到,他将会使用程序集A和B的部分名字执行Assembly.Load动作。这就意味着如果程序集的1.0.0.版本没有找到,他将尝试1.0.0.1版本。同样的,如果culture=neutral的程序集找不到,他会查找Specific Windows或Framework Culture。这仍然会根据CLR装载程序集的算法有不同的变化。因此,你可以想象每个程序集都有大量的文件没有找到,同样当需要多个程序集的时候在工作流设计时创作环境中就会无法找到。

因此,除了在前面文章的Tips,请使用附加到进程方式将含有工作流设计器的实例附加到VS中,并且观察是否有大量的文件无法找到的异常。如果有,请确保必要的程序集在VS的探测路径中,并查看是否有性能上的提高。

请关注后续文章。

 

 

本文转自生鱼片博客园博客,原文链接:http://www.cnblogs.com/carysun/archive/2010/04/08/WF3-designtime-performance-II.html,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值