这一章我们这副图来了解MVC的整个执行流程。
另外:
1、IIS是通过“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config”配置文件中的
2、MVC中有4种Filter,分别是IActionFilter/IAuthorizationFilter/IExceptionFilter/IResultFilter,这些内容,请听下回分解^_^。
3、MVC框架中非常重要的一部分是Service Location,所有的扩展都是建立在Service Location之上。
使用事务自动回滚来实现单元测试
我们没有使用TDD,所以单元测试最麻烦的就是准备测试的基础数据。我们现在是使用内存仓储来做单元测试,要为每个仓储都构造基础数据,非常麻烦。
前几天看xunit的源码,看到AutoRollbackAttribute这个特性,异常的兴奋 ^_^。怎么就忘了用事务的自动回滚呢?
AutorollbackAttribute使用了.Net Framework自带的TransactionScope。TransactionScope在.NET 2.0中就已经有了,可用于分布式事务。用这种方法来做数据的自动回滚也有一些不足:
1、数据库要支持事务。
2、内部数据库操作的逻辑里没有事务的实现。
很庆幸的是我们的项目正好都满足上面的2点,唯一不足的就是mongodb不支持事务。所以就需要混合仓储实现了,事务数据库使用真实的仓储,mongodb使用内存仓储。
在MVC 3.0中使用MS Chart
MsChart是微软制作的功能强大的图表工具,用它可以很方便的建立各种图表。博客园里也有各种MS Chart在MVC中的用法,都不是很满意,要么要加handler,要么在视图中用,感觉各种不好。琢磨了下,也google了一些资料,最后决定用下面这种方式来实现。
多线程并发测试类库
WEB项目中除了单元测试,还经常需要多线程测试一个方法是否存在并发问题,或者是否有性能问题。每次都要写测试代码总是一件很累的事情。于是写了这一个多线程测试的类库,用来进行快速的多线程并发测试。
多线程并发测试由以下步骤完成:
- 创建并发测试的线程数,先创建的线程等待最后一个线程创建完成。
- 所有线程执行待测试的方法,返回测试的结果。
- 等所有线程执行完成后,进入思考时间等待。
- 继续进行循环测试。
在生产环境下,MONO与.NET Framework的性能差别。
上个月公司项目需要,在腾讯社区开放平台部署了基于mono的腾讯校友应用“公务员考试”。经过一周的观察,发现问题非常大。
2月18日到2月24日的平均值在70.91%。而2月23日-3月1日平均值在76.61%。占用的CPU非常高。在访问用户数不高的情况下,单是MONO的守护进程就占用了75.0%的CPU。
生产环境上是用Apache+mod_mono来做WEB站的,总的来看,对于WEB负载,MONO的情况并不理想。