zoukankan      html  css  js  c++  java
  • 代码生成工具随笔(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 

    主要研究技术:代码生成工具、会员管理系统、客户关系管理软件、病人资料管理软件、Visio二次开发、酒店管理系统、仓库管理系统等共享软件开发
    专注于Winform开发框架/混合式开发框架Web开发框架Bootstrap开发框架微信门户开发框架的研究及应用
      转载请注明出处:
    撰写人:伍华聪  http://www.iqidi.com 
        
  • 相关阅读:
    MQTT TLS 加密传输
    python多进程并发redis
    各种消息队列的特点
    mqtt异步publish方法
    Numpy API Analysis
    Karma install steps for unit test of Angular JS app
    reinstall bower command
    Simulate getter in JavaScript by valueOf and toString method
    How to: Raise and Consume Events
    获取对象的类型信息 (JavaScript)
  • 原文地址:https://www.cnblogs.com/wuhuacong/p/487298.html
Copyright © 2011-2022 走看看