最近在做WEB方面的开发,发现很多工作是重复的,这里的重复是"相似"而不是"相同",如果是相同,很显然我们会采用组件化模块化形式提高软件的可复用性.但是相似的工作,我们就不太好模块化设计.另外,计算机的强项就是做重复性的,有规律的工作,为什么不好好利用它而解放自我呢? 所以在Blog里准备做个专题,关注一下代码自动生成技术.
下面罗列了现成的一些优秀的生成工具
ArcStyler ( Tier Generator for Full Web Application )
C# Data Tier Generator ( Code Munger for Database )
CodeSmith ( Tier Generator for Any code )
Codify ( Mixed-code Generator for Any code )
CompileX ( Tier Generator for Full Web Application )
Constructor() ( Tier Generator for Full Web Application )
Data Tier Modeler ( Tier Generator for Database )
DBHelper ( Code Munger for Database )
DBMethods ( Tier Generator for Database )
Deklarit ( Tier Generator for Database )
Doxygen ( Code Munger for Documentation )
Expert Coder ( Partial Class Generator for Any code )
GSL ( Tier Generator for Any code )
iQgen ( Tier Generator for Any code )
Iron Speed Designer ( Tier Generator for Full Web Application )
IronWorks ( Tier Generator for Full Web Application )
JuggerNET ( Tier Generator for Database )
Lattice.SPGen ( Tier Generator for Database )
LLBLGen ( Code Munger for Database )
Mia-Generation ( Tier Generator for Any code )
Monstarillo ( Tier Generator for Database )
MyGeneration ( Tier Generator for Database )
NCodeGen ( Tier Generator for Any code )
nDevelopment ( Tier Generator for Database )
nTierGen.NET Code Generator ( Tier Generator for Full Web Application )
NVelocity ( Tier Generator for Any code )
Object Model Generator ( Tier Generator for Other )
OlyMars ( Tier Generator for Full Web Application )
Builds C# and ASP.NET applications using a tier generator model.
Persistence(R) Plug-Ins for Eclipse ( Tier Generator for Database )
Pragmatier ( Tier Generator for Database )
QuickAdmin ( Tier Generator for Database )
RapTier ( Tier Generator for Database )
smartGENERATOR ( Tier Generator for Any code )
SoProMach ( Tier Generator for Any code )
tangible architect ( Tier Generator for Business Logic )
TCDesigner Standard ( Tier Generator for Database )
VBeXpress.NET ( Tier Generator for Full Web Application )
Visible Developer ( Tier Generator for Full Web Application )
Warp.NET Developer Studio ( Tier Generator for Database )
X-Code .NET ( Tier Generator for Any code )
XCoder ( Tier Generator for Full Web Application )
现在ORM大行其道.它解决的问题是从数据库与对象(实体)之间的映射,但是还有个问题仍需要解决就是实体与UI界面的映射.如果DB-->实体-->UI三者可同步关联.那么我们的工作量将会减少很多.上面有些工具是可根据DB生成整个项目工程.估计再过几年,又是IT界的下岗风波了.
前些日子,写了个存储过程自动生成器(SP_GEN),巧合的是今天在用TCDesigner Professiona时,他会生成很多N多个.sql脚本.原先以为SQL SERVER 2000查询分析器的时候,可以一次性选定多个执行,结果很失望,没有批量执行功能.所以再给这个存储过程自动生成器再加了SQL脚本批量执行功能.
存储过程自动生成器(SP_GEN)能做什么
1. 可以自由选择字段.
2. 可以产生SELECT代码(全部或是根据主键筛选)
3. 可以产生INSERT代码
4. 可以产生UPDATE代码
5. 可以产生 DELETE代码
6. 可以批量将.sql脚本导入SQL SERVER
软件截图如下
由于时间比较匆促,软件的界面比较粗陋以及功能也比较单薄.
但在平时中确实提高了生产率:)
将来可能对SP_GEN从以下几个方面改进
1. 支持多表关联.
2. 简化SQL的操作.尽量避免敲SQL代码.除非是一些逻辑性操作.
3. ...
对于软件代码自动生成的一些设想
1. 根据数据库设计模型,生成数据库表,这步大部分的数据建模工具(比如PD)会提供.
2. 根据数据库表生成实体类,实体类在这里主要做为参数传递和保存相关的相信.
3. 用存储过程生成器生成存储过程.
4. 生成类似SQLHelp的中间层,完成实体类与存储过程的交互
5. 生成逻辑层.支持查询,修改,添加,删除等操作.
6. 可能以上几步用ORM更好.但要考虑ORM的灵活性和效率.特别是在多表查询时.
7. 根据第1步和实体类生成WEB界面.需要对界面控件进行摆放而无需编码,即控件值到实体的映射.
8. ...
附:存储过程自动生成器(