开发者社区> walb呀> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

代码生成工具随笔(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) ---关于代码生成器,如需转载请自行联系原博主。



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
web生成工具
引用 :http://www.cnblogs.com/freeskycd/archive/2010/03/03/1677728.html 1. 屏幕取色工具(TakeColor) 它可以拾取鼠标在屏幕上任何地方停留位置的颜色。
1058 0
关于写毕业设计论文的一些实用小工具收藏
关于写毕业设计论文的一些实用小工具收藏
11 0
《hhhhold.com》 – 很好玩的随机占位图片生成工具
  在制作网页的时候,我们会使用一些假内容和图片来填充页面,这样能够看到更真实的效果。在之前的工作中,我用过的一款占位图片生成工具生成的图片是只有背景色的色块,没有图像,所以效果不够真实。   这篇文章向大家分享一款特别有个性的随机占位图片生成工具——hhhhold.com,你可以通过 URL 定制,hhhhold.com 会随机返回图片。
1086 0
Python 给图片加文字或logo水印(附代码) | Python工具(1)
Python 给图片加文字或logo水印(附代码) | Python工具
20 0
dbus小工具
dbus提供了两个小工具:dbus-send和dbus-monitor。我们可以用dbus-send发送消息。用dbus-monitor监视总线上流动的消息。
1153 0
关于生成器的那些事儿
我猜大家对于生成器肯定并不陌生,但是为了能让我愉快的继续装逼,我们还是用点篇幅讲一下什么是生成器吧。比如在 Python 里,我们想生成一个范围 (1,100000) 的一个 list,于是我们无脑写了如下的代码出来 注1:这里有同学提出了为什么我们不直接返回 range(start,stop) ,Nice question,这里涉及到一个基础问题, range 的机制究竟是怎样的。
1770 0
.Net工具 - SocanCode代码生成器
SocanCode是一个能帮助.NET开发者自动生成代码,存储过程,用户控件等的工具,使用它可以省去众多繁琐的重复工作,让开发人员把精力集中在业务逻辑上,大量减少重复劳动 作者:廖勇军 软件功能及特点: 1、类反射工厂,泛型接口,三层架构,缓存机制,存储过程,分页,用户控件,一气呵成 2、支持SQLSERVER、MySql、ACCESS.
839 0
Font Combiner – 自定义网页字体和图标生成工具
  Font Combiner 是一个功能丰富的 Web 字体生成工具和字体改进工具,提供字距调整、构造子集、各种提示选项和自定义字体字形组合。您可以生成您自己的自定义字体的格式和文件大小。   另外还有成千上万的免费图标。
708 0
+关注
1038
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载