Kooboo CMS
Kooboo是一个功能强大的系统,单单凭这里的几百个文字远远无法完全,详细的进行介绍。幸好,Kooboo CMS是一个开源的系统,并且也提供了比较全面详细的文档供开发人员了解。做为一个开源系统,而里面的大部分代码都是我完成,所以在这里也想从技术方面来谈谈Kooboo CMS。
Kooboo尽管从代码的编写和架构设计上,并不是很令自己满意,很多代码都存在着各种问题。一方面,也是水平所限;另一方面也是资源和时间的关系。但从技术路线的选择上,在目前看来,还是比较满意的。首先,Kooboo是使用ASP.NET MVC架构之上的全新的ASP.NET架构形式,要知道,在去年的这个时候ASP.NET MVC仍然还处于CTP阶段,这对于一个企业开发具有重要意义的产品来说,是一个多么疯狂的决定,幸好老板也是技术出身,也是一位经验丰富的“老”WEB程序员,他对ASP.NET MVC持坚决支持的态度,并且在公司内部极力推广。其次,在Kooboo CMS中的使用的各种组件框架完全走的MS路线,ORM使用Entity Framework,还使用到了Unity,Enterprise Library。
在UI方面,使用了Extjs,完全解决了做为开发人员,在表单开发方面的不足,并且通过表单生成引擎,解决使用Extjs之后,需要编写Javascript(JSON)代码来设计表单的尴尬,要知道一个复杂的表单用JSON来表示,可完全不比通过直接写HTML和样式来的简单,而且一旦出错调试起来会让人马上疯掉。表单生成引擎部分,也许会单独提取出来作为一个独立的开源项目提供使用Extjs的使用者,绝对可以大大提高使用Extjs的效率。
整个系统架构以MVC和Extjs为基础之后,传统的WebForm开发和标准的ASP.NET MVC开发模型又全变了,开发人员所面对的就只一种对象JSON,所有的网络传输也全部变成了传输JSON数据。而开发人员也从原来的数据绑定和字段绑定的痛苦中解脱出来,这是我这一年开发中,最为快乐的事情。
在现有的Kooboo源码中,有两部分是最为不满意的:一部分就是测试,本来MVC的一个重要意义就是它的可测试性,在MVC项目中,可以很方便的做到测试驱动开发,这将会大大提高软件的质量,而Kooboo除了在早期的代码中有一小部分测试之外,后来连这一小部分也被删除了(没有及时同步);另一部分就是Controller的职责问题,在很多人的架构中,肯定会按功能不同进行分层,比如逻辑层。但是这里,如果没有特别必要,我并没有专门去抽取这一层出来。一方面,在很多地方,Controller都只是做数据的查询工作,而使用了Entity Framework后,查询会变得很简单;另一方面,由于序列化JSON的需要,我需要大量用户匿名对象,而如果单独提取一个独立层出来,我就是要额外定义很多相关的POCO实体来对应JSON序列化的需要。所以现在的很多Controller都是“胖”(fat)的Controller,当时在没有必须的情况下,我不认为它们应该被封装,在会被重用的情况下,我才会考虑重构封装。只是在没有足够测试支持的情况下,每次重构我都要承受着巨大的压力。:(
最后,附上Kooboo的相关资源:
CodePlex站点:http://kooboo.codeplex.com/
Live Demo: http://www.kooboo.com/demo