分类: 系统运维
2012-05-01 15:30:31
我标题里的21天只是模仿《21天xxx入门》定的,有可能不用21天。
从去年9月到现在,我到新公司已经大半年了,和原来的公司环境不一样,原来的公司是一个技术型公司,我做的研发基本上是公司CDN内部应用程序居多。而新公司是一个网络互动广告公司,主要是做活动网站或者客户官网开发维护,由于项目非常多,网站问题和新功能很多,每天从早忙到晚。
由于公司以网站开发为主,特别是活动网站很多,因此需要快速开发,对于静态内容我们公司使用Opencms进行开发非常方便,基本上半周或者一周一个活动网站。但是对于一些动态开发,用Opencms比较麻烦,Opencms不能调试,估计直接用SSH框架都比用它要快。
鉴于Opencms的种种缺陷,我就想起以前在上一家公司的经理提到,他以前做开发是用代码来写代码,也就是开发之前先做一个代码生成工具来把重复性的代码生成出来。
我并没有动手做,因为我知道这样的代码生成工具,在开源网站上肯定有
1) Grails
Grails是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、Hibernate和其它标准Java框架之上,从而为大家带来一套能实现超高生产力的一站式框架。
我用过它做过开发项目,开发时,首先定义一个个domain(相当于数据库里的表),然后定义各个domain的关联关系(一对一,一对多,多对多),domain和domain之间的表现用图形化显示很像数据库设计工具的外键关系图,然后通过命令行生成CRUD,语法里兼容java。
我没有用它的原因:
Ø 我的习惯是以数据库为中心,应该先设计好数据库,根据数据库生成代码。而grails,在定义好domain时,就会自动在数据库里建立表;
Ø 而且各个表的关系只能通过domain进行控制,而且各个表里会附加一些字段例如version;
Ø 而且生成的CRUD是通过Hibernate操作数据库,我不喜欢Hibernate,因为对于复杂的表关系的操作Hibernate太麻烦而且效率低,我更喜欢jdbc那样简单可控;
2) J-HI
J-HI是一款JAVA WEB应用软件快速开发开源平台,主要服务于软件企业和传统行业企事业单位信息中心的开发人员,为他们提供一套完整的一站式的JAVA WEB应用软件快速开发解决方案。
这个框架我用过,而且去参加J-HI项目开发公司的 CTO的介绍(好像是51CTO还是CSDN的技术研讨会)。J-HI和Grails在原理上很类似,J-HI v1.0目前支持生成spring+jdbc和SSH,J-HI本身是一个eclipse插件(),我在去听演讲之前,就下载进行试用(他们把eclipse改造为J-HI的开发工具,下载下来),安装比较简单,很容易就生成了一个我比较喜欢的spring+jdbc,这个比Grails更好用,能够生成简单界面和复杂界面两种。而且各种类型在生成的界面上的输入方式有所不同。
我没有用它的原因:
Ø J-HI和Grails一样以Model为中心,自己建表;
Ø 对数据库操作自己封装到一个jar包,有学习成本,我学了一天没搞明白如何很容易修改生成出来的代码,而且对于那个jar包里的代码可靠性有待考证;
3) rapid-framework
rapid-generator是一个生成器引擎,让你可以专注与代码生成器模板的编写, 可以生成如ibatis,ibatis3,hibernate,spring_mvc,struts2等等代码.
我没有用它的原因:
Ø rapid-framework和前面J-HI和Grails一样以Model为中心,只不过是把表建立在xml文件中;
我在找代码生成工具的过程中,总结了我心中的代码生成工具
1) 以数据库为中心,这个首先是我的习惯,我习惯于先设计好数据库,再做coding,设计数据库的同时更好的理解需求,有不明白的可以及时修改,最后出来的数据库设计是符合需求的。
而以model为中心,则是先coding,再设计,有点违反了软件工程过程,而且若是需求变动或者错误,则需要修改代码。
2) 数据库可控,最好是能够直接修改SQL语句,这样对于复杂的表关系可以很快定位,对于需要提供效率可以很容易修改,这就是我一直没有用Hibernate的原因了。
3) 和语言无关,这个代码生成工具可以是java,或者php写的,但是生成出来的代码可以是java,php,或者C#,或者是其他语言。对于这个,若是以Model为中心的话,就无法做到这一点。这个也决定了必须以数据库为中心。
4) 基于第3点,这个工具应该是支持多套模版,支持自定义模版。
由于没有找到合适的代码生成工具,于是乎,我需要亲自动手写了。我计划先开发代码生成工具框架,同时做一套java的模版,再然后做一套php的模版。