作为一个开发者,我们免不了要做很多重复的事情。我们不只在重复别人造轮子,也在重复自我浪费时间——我们应该有一种罪恶感。庆幸的是很多人在帮助我们尽可能的减少这种重复,他们提出或总结了很多的宝贵的思想,开发了很多的有用的开发辅助工具。比如设计模式、类库、O/RM,代码生成器,以及更具体的CMS(Content Management System)等等。设计模式让我们在设计思想得到一定程度的解放,在设计方向上给予指引。这就像乘法口诀表,不用我们算个简单的3721还需要掰手指头;类库如.Net的BCL(Base Class Library)、FCL(Framework Class Library)等,以官方发布的形式将一些常用的功能进行了封装。当然,还有公司的类库或自己的私房类库;O/RM让我们在领域模型和关系数据库的映射上提高开发效率。据统计如果不使用O/RM,在映射方面需要花去总体开发时间的30%-40%;代码生成器则是将有规律的集中的重复的工作交给程序来处理;CMS在应用的层次上减少了重复工作,比如Wordpress,DotNetNuke等。
Xoohoo又试图解决哪些方面的问题呢?
Xoohoo基于ASP.NET MVC(以下简称MVC)3的框架,其前身是微软的开源项目Oxite。遗憾的是后者停止了开发目前还停留在MVC 1。庆幸的微软提供了另一个开源项目Orchard供我们选择,二十四画生对Orchard颇有研究。不管是Oxite还是Orchard,他们从一开始就试图给用户提供一个可用的产品(Blog,但不仅限于此),并提供了超强的扩展性。
Xoohoo的目的不是要给您一个现成的产品,而是一个轻量开发框架,旨在能为您减少那么一点点重复的工作。如果您开发一个新的基于MVC的项目,希望您能试试。
您首先可以将之看作是一个类库,对MVC 3进行了扩充。它借鉴并使用了一些优秀博文或开源项目的代码。由于资料比较零散,不再列出,在此一并表示感谢;其次将之作为一个小框架,在此基础您可以开发自己的模块(插件),并能进行无缝整合。如果愿意,您还可以将某些模块拿出来分享。
将Xoohoo作为一个类库,我相信您总等找到您所需要的。
1、ActionFilter
Xoohoo内置了若干的AtionFilter,包括TimerActionFilter、CompressActionFilter、ErrorExceptionFilter以及各种的AuthorizationFilter。
TimerActionFilter能计算Action的执行时间:
CompressActionFilter能对输出进行压缩(gzip,deflate)。
ErrorExceptionFilter类似于MVC内置的HandleErrorAttribute,配合Xoohoo内置的日志模块,可以进行日志记录;配合Xoohoo的皮肤模块,错误提示View还可以换肤。
各种的AuthorizationFilter提供了非常灵活的授权(权限)认证,以后会有专门的篇幅加以介绍。
2、ActionInvoker
XoohooControllerActionInvoker重写了MVC内置的ControllerActionInvoker的CreateActionResult等方法,使其支持AJAX请求,以及更灵活的Action返回值类型。
比如有Action:
2: {
return View(new List<Article>());
4: }