代码改变世界

Kigg项目分析 -- 1.项目的入口

2010-10-02 15:56  穆容  阅读(2082)  评论(4编辑  收藏  举报

最近看了微软的asp.net mvc系列视频教程,mvc又有了新的认识,但最近手懒的很,故而没有再写什么实验程序,而是下载了一个轻量级的开源mvc项目KIGG通过分析来学习asp.net mvc.

Kigg是个框架中重载了很多asp.netmvc底层的东西,如最简单的post,get.看完之后让然有种豁然开朗的感觉.

关于Kigg的项目结构,网上已经有文件进行说明了,我就不单独讲述了.但是在我的学习中,会随时贯穿项目结构说明.

 

1.       项目的入口

在开始研究这个框架的时候,一直没有找到定义URL规则的地方。就是说该项目并没有像传统的MVC程序,将URL规则和一些程序初始化的工作写在Global.asax中。但是在我们在Global.asaxOnStart中,能看到这个方法:Bootstrapper.Run();转到定义后,我们能看到这样一句:

           IoC.ResolveAll<IBootstrapperTask>().ForEach(t => t.Execute());

看到了IOC,我第一反应就是要到配置文件中去找找实现IBootstrapperTask的类有哪些。通过搜索,我发现有:CreateDefaultUsers,StartBackgroundTasks,RegisterRoutes,RegisterControllerFactory,从名字我们就能看出,RegisterRoutes就是我们要找的注册URL Routes的地方。找到RegisterRoutes类后,就能从Execute()方法中找到注册的URL路径了。

从我们找到项目的过程中,我们不难发现这个项目的几个特点:首先,大量的使用Helper方法,如我们在一开始看到的ForEach就是一个典型的枚举的Helper。其次就是IOC始终贯穿整个项目,如IoC.ResolveAll<IBootstrapperTask>这种方式就是典型的IOC用法。