热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

也谈代码生成器

关于代码生成器TeddysKnowledgeBase兄在博客园上已经谈过几次了,如他的也谈orm和代码生成和没有ORM或代码生成数据就不能持久化了?-用范型技术代替代

      关于代码生成器 Teddy's Knowledge Base 兄在博客园上已经谈过几次了,如他的也谈orm和代码生成没有ORM或代码生成数据就不能持久化了? - 用范型技术代替代码生成! 等,今天我不谈代码生成器的意义,只谈代码生成器的设计方案,最后给一个DEMO供大家下载.

    代码生成器的用途一般是根据表自动生成(Model,存储过程,Dao,Biz,UI(html,asp,aspx,jsp,winForm ....))等,分析其特性代码生成器其实就是MVC的结构,M 指的是数据库表或其他(数据源),C指的是代码生成器引擎,V指的是代码输出。

         那么代码生成器的方案有哪些可以选择?

         第一:模型逻辑,控制器逻辑,视图逻辑都在WinForm的代码中混着。

                     很多设计者由于项目的状况(时间比较紧)或为了暂时的方便就把代码生成的逻辑直接放在代码生成器的引擎中,就像JAVA中有些人把所有的控制逻辑和展现逻辑都放在Servlet中一样。这样的程序虽然在一定程度上符合了很多开发者的需求,但是很多的项目框架和你的代码生成器生成出来的框架不一致,那就不行了,要么重新修改接口修改内部的代码,要不再转为指定的项目框架再设计一套代码生成器。优点:速度快 ; 缺点: 扩张性差.

       第二:在特定项目的数据库中建几个存储过程来实现代码生成,优点:速度快 ; 缺点: 扩张性差.

       第三:表示层采用服务器视图模板引擎的MVC结构,如JSP 视图引擎,ASP/ASPX/PHP等服务器视图引擎,优点:开发非常方便,可以很好的分离了视图/控制器/模型,缺点:依赖于特定的Web服务器,使用起来没有CS结构的方便好用

         第四:自行开发一个视图模板引擎,然后基于该模板引擎建造一个MVC的代码生成器,如商业上的CodeSmith.优点:功能强,灵活,扩展性好;缺点:收费的。。。。

         第五:基于开源模板引擎 Velocity,StringTemplate /NVelocity,StringTemplate.Net 建造一个MVC的代码生成器。

         第六:基于动态语言 IronPython,Boo ,ruby等

         第七:视图引擎采用Velocity,StringTemplate 等开源引擎,控制器引擎采用JAVA/.NET, Shell 接口采用动态语言,利用动态语言把模板引擎和控制器引擎有机的结合起来。

         关于代码生成器的7种模式是我在日常工作中的总结,欢迎大家再多提提其它的设计方案。

         最后备上一个基于第五种方案的DEMO--NDO.Tools,该生成器根据数据库表自动生成模型类,以及填补了CoR代码生成器缺少的一部分----根据表自动生成模型,控制器,以及对应的视图。

         关于CoR的介绍请看,我前几天写的顶着Rails的浪潮,用NDO + Castle的monorail 也来秀一把  


转:https://www.cnblogs.com/netcasewqs/archive/2006/11/14/560201.html



推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • 小程序自动授权和手动接入的方式及操作步骤
    本文介绍了小程序支持的两种接入方式:自动授权和手动接入,并详细说明了它们的操作步骤。同时还介绍了如何在两种方式之间切换,以及手动接入后如何下载代码包和提交审核。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
author-avatar
天云2_776
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有