代码生成工具(1) ---关于代码生成器
本人比较早就开始编写代码生成器, 第一款的生成工具SharpCode(有兴趣的可以在Google上搜索一下http://www.google.com/search?hl=zh-CN&newwindow=1&q=SharpCode&lr=), 就开始编写支持多数据库的C#代码生成工具, 一直以来也很想把该工具做的更加智能化一些, 可是工作之余,很少有时间, 所以新版本的代码生成工具一直停留在蜗牛式的开发过程中.
不过一直留意着代码生成工具的前沿情况, 有CodeSmith, MyGeneration, Codus都是不错的代码生成工具, 国内好像也还有一些做得不错的工具, 像好友Wintle的Codeplus, 还有一个叫李天平的同行也发布了一个, 各有各的特色.
很多代码生成器都是有一些自己的特点, 不过扩展性都不是很好, 也很少提供合适的模型让别人进行开发, 不过作为编程人员, 去适应别人还是很有好处, 可以快速得到生成的代码.
本人比较喜欢自己开发一些代码工具, 以帮助自己完成一些开发工作或者辅助开发, 因此就自己把各种数据库的元数据模型抽取出来, 并通过配置方式把这些数据库,表,字段, 还有存储过程,视图等等一一获取出来, 有了这些基础数据, 我就可以开展我各种代码生成的工作了.
开始的时候想, 要做就做的有特色一点, 除了支持多数据库, 最好还支持多语言, 因此就研究CodeDom, CodeDom的代码非常麻烦, 不过好一点的有Refly的CodeDom封装模块, 简化了很多, 有兴趣的可以参考(http://www.codeproject.com/csharp/refly.asp),不过使用了这个进行开发后, 发现代码定制要经常修改代码非常麻烦, 也不适合那种经常变动的情况, 而这个是我们代码生成工具的一个很重要的标准, 纵观很多代码生成工具, 好的做法还是使用模板引擎来进行开发, 如CodeSmith, MyGeneration一样, 而且提供了ASP.net相似的语法支持.
于是, 对模板引擎进行学习, 发觉NVelocity不错, 开源而且也比较容易学, 语法丰富, 因此将我的代码生成工具由原来的CodeDom方式改为使用模板引擎的方式, 获得了很好的弹性, 加快了代码生成的工作.
本人最早在Blog上发布的DAOCoder就是使用了NVelocity进行NHibernate的实体类和DAO代码的生成(有兴趣的可以参考http://wuhuacong.cnblogs.com/archive/2006/05/16/401399.html), 不过没有提供很好的界面(控制台程序), 那个时候的数据库模型基本上已经定形, 不过我还没有整合一些其他的生成模块(不过已经可以支持完整的PetShop架构的所有代码了), 就一直没有发布完成的代码生成工具. 不过大家可以参考一下工具的界面:
代码生成器软件下载地址: http://www.iqidi.com/download/Database2SharpSetup.rar
代码生成工具(1) ---关于代码生成器相关推荐
- 狼奔代码生成工具使用心得
狼奔代码生成工具(http://ltfwan.d33140.jit8.cn)是一款为程序员设计的代码生成器,更是一款软件项目智能开发平台,它可以自动生成ASP.NET页面及后台代码,采用了面向服务的架 ...
- 代码生成工具的分类及比较
中国有句古语叫做"工欲善其事,必先利其器",用通俗的话来说就是"磨刀不误砍柴功",古人的这些话告诉我们:要把事情做好,事先应该准备合适的工具.工具不仅仅包括器具 ...
- 代码生成工具随笔(3)---占领最后一块黄金宝地
目前代码生成工具多如繁星,绝大多数的代码生成工具都是基于数据库进行实体类.数据访问类.部分业务类等的代码生成,较少会用来生成易用.重用的界面代码,因为这块的逻辑很难控制,每个人的需求都不一样,而且把整 ...
- 同步数据流语言代码生成工具的研究进展
摘要 同步数据流语言(如Lustre,Signal)近年来在航空.高铁.核电等安全关键领域得到了广泛应用,因此与这类语言相关的开发工具本身的安全性问题受到高度关注.同步数据流语言到串行命令式语言的代码 ...
- 代码生成工具随笔(2) ---我的生成工具
目前有很多代码生成工具,很多做得很好,我在上一篇关于代码生成工具的随笔(代码生成工具随笔(1) ---关于代码生成器 )中,大概介绍了一些代码生成工具的现状,也得到很多人的关注. 由于本人很早就在代码 ...
- php后台代码自动生成程序,Thinkphp自定义代码生成工具及用法说明(附下载地址)...
本文实例讲述了Thinkphp自定义代码生成工具及用法说明.分享给大家供大家参考,具体如下: 我最近沮丧的发现在使用Thinkphp很多时候我都在做重复的事情,比如重复写最简单的CRUD方法,编写表单 ...
- 常用代码生成工具汇总(转)
1.1 CodeSmith 一款人气很旺国外的基于模板的dotnet代码生成器 官方网站:http://www.codesmithtools.com 官方论坛:http://forum.codesmi ...
- 实用的 CSS3 参考手册和代码生成工具
CSS3技术现在越来越成熟,通过CSS3的一些新特性(如box-sizing.边界半径.文字阴影.渐变等)创建的效果已经令前端开发者兴奋不已.使 用CSS3进行前端设计是未来的发展趋势.因此,如果你是 ...
- 如何提高程序员人效?代码生成工具/框架
image.png 最近事情太多,很久没有更新简书,突然想起如何提高程序员人效这个问题,就推荐一篇代码生成工具/框架的文章. http://www.cnblogs.com/skyme/archive/ ...
- 什么? 你还没用过 Cursor? 智能 AI 代码生成工具 Cursor 安装和使用介绍
作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,<性能优化方法论>作者.<解锁大厂思维:剖析<阿里巴巴Java开发手册>>.<再学经 ...
最新文章
- 第二十一节(数组概要, 一维、二维数组的声明和使用,数组的排序,数组的查找,)...
- discuz如何去掉论坛的网页后缀名称forum.php
- Java面试通关要点汇总集之工程篇参考答案
- 关于IPC入侵的一些细节
- Spring Boot进阶之Web进阶 代码推送的github上面去
- 将信号量代码生成静态库以及动态库
- 【HDU 4394】Digital Square(bfs,数位搜索,思维,数学)
- 利用VMware Infrastructure SDK编程控制虚拟机集群(3)
- 坏消息!FCC默许美国ISP在未经批准之情况下出售用户数据!
- android camera工程师,Android从Camera中获取图片的两种方法
- 力扣645.错误的集合
- Java Swing/AWT API速查手册
- Vue报错:‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- 回调函数的概念及使用
- Python报mongod: error while loading shared libraries: libcrypto.so.1.1
- html小写罗马字符怎么写,如何在 LATEX 中插入大小写的罗马字符
- 大数据训练营-hadoop篇-02
- URL Decode - URL解码函数
- 高德地图E/libEGL: call to OpenGL ES API with no current context (logged once per thread)
- 什么无线桥接一直正在链接服务器失败,无线桥接连接失败_WDS无线桥接不成功怎么办?-192路由网...