感受代码生成之美

2011-11-07 06:15吉基兵
中国现代教育装备 2011年6期
关键词:数据源对话框代码

吉基兵

江苏省南京市第十三中学 江苏南京 210008

☆现代教育技术应用☆

感受代码生成之美

吉基兵

江苏省南京市第十三中学 江苏南京 210008

在信息技术教学中,有些问题常常必须通过程序才能完成这项工作,然而对大多数一线教师来说,编写程序是一件痛苦的事情。那有什么办法来解决呢?使用代码生成。代码生成技术已经非常成熟了,网上有各种各样的代码生成工具。本文从什么是代码生成技术开始,分析了常规开发面临的问题,使用代码生成器有哪些好处?介绍了几款常见的代码生成器,重点介绍了CodeSmith的使用,感受代码生成之美。使用代码生成工具,我们可以快速生成代码,进而编写出符合实际需要的软件。

一、什么是代码生成

代码生成就是利用工具或程序,通过简单配置,快速生成程序代码、数据库脚本、数据字典等的编码方式。代码生成通常与数据库相关项目联系在一起。通过简单配置,可以快速生成增删改查、分页等基础处理类库,甚至UI页面也可生成,整个过程无需编码。生成的代码风格统一,无需测试。

二、常规开发面临的问题

代码大量重复。在程序开发过程当中,程序员会经常做着重复性的工作,最常见的是访问数据库,程序员要经常编写增、删、改、分页之类的操作。为了避免这个问题,节省大量机械录入的时间和重复劳动,提高工作效率,而将精力集中于核心业务逻辑的开发。一个适合于自己使用的代码生成器显得非常重要。

项目严重超期。越来越多的压力使得一个软件项目无论是最终用户、企业、开发团队都希望在最短的时间完成,可事与愿违的是软件项目的时间延期问题普遍存在,一些调查表明,70%的项目超出了估算的时间。大型项目平均超出计划交付时间的20%到50%,项目越大,超出计划的时间越长。一直以来开发速度的问题都是软件开发业的头等问题。那怎样才能在保证软件质量的同时又缩短开发速度呢?

1.代码生成的好处

编码效率高。可以在1分钟内生成几万行代码,把人从重复劳动解放出来,用更多的精力去关注更核心的业务逻辑,系统的优化;代码质量高。因为代码都是一个生成器模板生成出来的,代码风格一致,便于以后维护。

2.代码生成器有哪些

(1)IBM Rational Rose

Rose实际上一个建模工具,但具有代码生成功能。

Rational Rose是一个完全的,具有能满足所有建模环境(Web开发,数据建模,Visual Studio和C++ )需求能力和灵活性的一套解决方案。Rose允许开发人员、项目经理、系统工程师和分析人员在软件开发周期内在将需求和系统的体系架构转换成代码,消除浪费的消耗,对需求和系统的体系架构进行可视化、理解和精练。通过在软件开发周期内使用同一种建模工具可以确保更快更好的创建满足客户需求的可扩展的、灵活的并且可靠的应用系统。

(2)Sybase Power Designer

PowerDesigner实际上一个建模工具,但具有代码生成功能。

PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设备模型进行控制。

Sybase PowerDesigner还是一个“一站式”的企业级建模及设计解决方案,它能帮助企业快速高效地进行企业应用系统构建及再工程(Re- engineer)。IT专业人员可以利用它来有效开发各种解决方案,从定义业务需求到分析和设计,以至集成所有现代RDBMS和Java、.NET、PowerBuilder和Web Services的开发等。PowerDesigner是结合了下列几种标准建模技术的一款独具特色的建模工具集:业务流程建模、通过UML进行的应用程序建模以及市场占有率第一的数据建模,这些建模技术都是由功能强大的元数据管理解决方案提供支持的。

(3)动软.Net代码生成器

动软.Net代码生成器是一款为C#数据库程序员设计的自动代码生成器,Codematic生成的代码基于面向对象的思想和三层架构设计,结合了Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。主要实现在对应数据库中表的基类代码的自动生成,包括生成属性、添加、修改、删除、查询、存在性、Model类构造等基础代码片断,支持不同3种架构代码生成。

(4)ASP.NET Maker

ASPMaker是一款自动化的ASP代码产生工具,它提供了一种方便快捷的可视化操作环境,使用者即使没有任何的网络编程经验,只要提供 Microsoft Access数据库或是ODBC数据源,就可以在五步之内快速地自动生成一整套ASP(Active Server Pages)程序。利用产生的ASP代码,用户能够在Web上容易地查看、编辑、搜索、加入和删除数据库记录。ASPMaker具有高度的灵活性,几个选项使你能够产生最符合你需求的ASP应用程序。产生的代码是干净的、直接的并易于定制。

ASP.NET Maker是一套非常容易使用的代码生成工具,同ASPMaker一样,它能快速地根据数据库连接资料来源中生成一套完整的ASP.NET程序。

它支持以下数据库:Microsoft Access、Microsoft SQL Server、Oracle、或任何具 ADO 或ODBC 连接的数据库。

(5)CodeSmith

CodeSmith一款国际知名度最高的基于模板的代码生成器,模板采用类似C#的脚本语言。

它主要特点在于模板的定制能力强,你完全可以像使用C#语言开发程序一样,编写属于自己的模板。如果嫌麻烦,在网上完全可以找到想要的模板,稍加修改就可以变成适合自己的了。你一些ORM(NHibernate、IBatis、LINQ)、三层架构(Petshop、NTiers)、数据库(分页、 CRUD存储过程、生成基础数据)、架构(CSLA.NET)、Ajax等等。几乎覆盖了所有应用,可以说“只有想不到,没有做不到”。

网上有很多共享的模板,其中.NetTiers尤为著名。

三、代码生成工具的使用

本文以CodeSmith为例,结合.NetTiers模板来介绍代码生成工具的使用。首先从网上下载CodeSmith,当前最新的版本为:5.2。参照以下流程安装,如图1所示。

图 1

如果需要将CodeSmith集成到VSTS(Visual Studio Team Suite)中,安装CodeSmith之前最好先安装VSTS,如图2所示。

图 2

安装完毕得到两个应用程序:CodeSmith Studio和CodeSmith Explorer,CodeSmith Explorer是知识模板浏览器,可内嵌在CodeSmith Studio、VSTS中,CodeSmith Studio是CodeSmith的集成开发环境可以编辑模板文件。

下面我们使用.NetTiers模板,连接数据库,设置相关参数来生成项目代码,学习CodeSmith的使用方法。工作流程,如图3所示:

图 3

1.添加模板文件夹

CodeSmith是基于模板文件来工作的,模板可是自行编写,也可以“拿来主义”。CodeSmith已经内置了许多模板文件,其他模板文件在使用之前,需要组织到CodeSmith中来,这就是在CodeSmith中为模板文件夹添加快捷方式,方法如下:

(1)在打开CodeSmith,找到Explorer面板。

(2)单击面板上的按钮,浏览到.NetTiers模板文件所在目录。

2.建立数据连接

(1)在CodeSmith中连接数据库之前,假定您的数据库已经部署并建立完成。图4是我们演示的数据库表结构。

图 4

(2)从菜单中执行命令“View-Schema Explorer”打开数据库连接管理面板。

(3)在Schema Explorer面板中,单击按钮“Manager Data Source ”打开“Data Source Manger”对话框。

(4)在“Data Source Manager”对话框中,单击“Add”,打开“Data Source”数据源设置对话框。

(5)在数据源设置对话框中,填写“name(连接别名)”参数,选择“Provider Type(数据库连接提供程序)”类型,本例使用Sql Server,所以选择“SqlSchemaProvider”,最后单击“Connection String:”后面的“…”按钮,填写数据库连接信息。

(6)在“Connection Properties”对话框中填写SQL Server服务器地址,登录账号信息,选择要连接的数据库;单击“OK”返回。

(7)返回后,连接字符串已经自动生成。

(8)可以单击“Test”测试数据库连接,确保成功。

(9)测试成功,返回“Data Source Manger”对话框,可以看到刚才添加的别名“demo”已经出现在列表中。单击“Close”返回。

(10)在“Schema Explorer”中也有了刚才建立的连接。

3.设置生成参数

(1)打开“CodeSmith Explorer”,或者在CodeSmith中,找到“Template Explorer”面板,依次展开“CodeSmith 5.2 Samples-Frameworks-NetTiers”,找到“NetTiers.cst”模板文件。

(2)在“NetTiers.cst”模板文件上右击,弹出菜单,选择“Execute”执行该模板文件。

(3)弹出该模板的属性设置窗口,如图5所示。

图 5

(4)首先设置数据源,单击“Choose SourceDatabase”选项后面的按钮“…”,弹出数据源选择对话框

(5)设置好数据源后,暂时只要设置“MappingFile(映射文件路径)”和“OutputDirectory(代码生成输出目录)”两个选项即可,如果需要特殊设置,可以设置其他选项。

4.生成项目代码

(1)参数设置完毕,单击窗口下部的“Generate”按钮开始生成代码,如图6所示。

图 6

(2)任务执行完毕,会自动弹出任务执行报告。报告中包括:任务执行汇总信息、项目使用配置信息、API使用案例、生成代码详细信息。

(3)模板输出信息如下,可以看到项目代码生成在指定目录。

Generation complete. Execution time:00:00:07.7311168

You can view current documentation @http://docs.netTiers.com

Generated solution can be found here:

file:\D:NetTiersDemoDemo.sln

(4)打开输出目录,可以看到生成的解决方案和项目。

5.测试编译项目

(1)在VSTS中打开解决方案“demo.sln”,选中“*.WebSite”网站项目,设置为启动项目。按“Ctrl+F5”执行,浏览测试网站。

(2)弹出网站默认页面,5秒钟后将会自动转向管理后台,左侧是所有的数据表,单击任一表名可以查看该表中的数据。

(3)单击下面的“Add New”按钮可以对该表添加新记录,如图7所示。

图 7

6.建立注册页面

(1)在网站根目录建立页面:“Reg.aspx”。

(2)打开“~/Admin/TUserEdit.aspx”页面代码,拷贝如图8选中部分代码。

图 8

代码参考(仅参考,实际可能不同)如下:

(3)打开“~/Reg.aspx”页面代码,在“”之间插入上一步拷贝的代码。

(4)打开“~/Admin/TUserEdit.aspx”后台代码,拷贝如下部分代码。

(5)打开“~/Reg.aspx”后台代码,将如下图选中的命名空间替换为上一步拷贝的代码。

(6)参照以下几步修改代码。

a.打开“~/Reg.aspx”页面代码,在“”标签后部加上“DefaultMode="Insert"”,表示该表单默认是插入模式。

b. 删除如下代码,表示删除“Update”按钮。

图 9

(8)用户可以注册了,大功告成。

[1] Peter Vogel.Practical Code Generation in .NET[M].美国:Addison-Wesley Professional, 2010.

[2] Kathleen Dollard. Code Generation in Microsoft .NET[M].美国:Apress. 2004

吉基兵,教育硕士,中教一级。

猜你喜欢
数据源对话框代码
正常恢复虚拟机
Bootlace Worms’Secret etc.
What Is Beauty?
创世代码
创世代码
创世代码
创世代码
Web 大数据系统数据源选择*
基于不同网络数据源的期刊评价研究
浅谈VB的通用对话框《CommonDialog》控件的使用