1、 本 科 毕 业 论 文 面向 B/S 三层架构 的代码生成技术 B/S Three-layer Structure Oriented Code Generation Technology 姓 名: 学 号: 学 院:软件学院 系:软件工程 专 业:软件工程 年 级: 校外 指 导教师: 校内 指导教师: 年 月摘 要 代码生成技术,是近几年 发展起来的一种自动生成高级语言代码的技术。 它的 主要 原理 是 : 先获取 元数据 ,然后 根据模板和特定规则来自动生成代码。使用代码生成技术, 可以免去程序员的一些重复劳动,适应多变的需求,缩短开发时间,提高开发效率。 当前 代码生成 研究 ,主要集
2、中在生成数据库访问代码。因为访问数据库可以用比较固定的模式来实现。 代码生成器 的技术选择有两种: ( 1)采用以 XML 为元数据文件,用 XSLT 作为 模板 来 转换 , 实现 代码生成 。 这个方法 可以直观的展示元数据的结构 , 并且对编程技术要求不高,但 其读写 IO 比较耗时。 ( 2) 把 模板 封装成方法,在内存中直接进行代码生成 。这个方法 方便用户预览和修改代码 ,但对编程要求比较高 。 本文 以三层网站开发结构为基础,结合对象关系映射 (ORM)的理论,实现了一种代码生成方式。主要内容如下: 第一, 分析了当前程序开发中对 代码自动生成的需求。 总结 了国内外在代码生成
3、 技术 上的研究,以及相应的软件产品介绍。 第二, 阐述了代码生成的概念 、 特点,以及优势和不足。同时分析了可以实现代码生成的技术和其对应的优缺点。 第三, 研究 BS 三层架构 代码生成的 设计理论 。 介绍了对象关系映射 ( ORM)的思想,和它在代码生成中的作用。 同时, 介绍了经典的三层架构设计,抽象出其中固定的模式。 第四, 实现一个 C#代码生成器实例。介绍其整体架构和详细设计方法,并给出相应的实现效果。 关键词: 代码生成 ; 三层结构 ; ORM Abstract Code generation technology, is a programming technology
4、for generating high level languages code automatically which is grown up these years. Its main principle is, acquiring the meta-data first and then generating code according to the templates and certain rules. By using code generation technology, we can avoid some redundant labors, adapting to the v
5、arious requirements, reducing the duration of software development, and improving the efficiency finally. Currently, code generation technology is mainly focused on accessing the databases for the reason that there can be a fixed style found in the database access process. For implementing code gene
6、ration, there are two options. The first one is taking XML files as meta-data and using XSLT files for transformation. This method will show the structure of meta-data clearly and do not require high programming skills. But its accessing IO process will lower its performance. The second one is encap
7、sulating the templates into methods and generating code directly in memory. In this way, user will preview and modify the generated code conveniently. However, its requirement on programming skill is relatively high. This paper implements a code generator which is based on three-layer structure and
8、combines the concept of object relational mapping. The content is as follows: First, this paper analyzes the requirements of code generation and the researches around the world including the relative software products. Second, this paper introduces the concept, characters, advantages and disadvantag
9、es of code generation technology. Meanwhile, it analyzes the optional chooses for generating code and their strongpoint and shortcomings. Third, this paper shows the theory foundation of code generation. It explains the concept of object relational mapping and ORMs applying in code generation. And t
10、hen it illustrates the three-layer structure and extracts the fixed pattern inside it. Forth, this paper realizes a code generator and explains its main frameworks and detailed design. Key words: Code Generation; Three-layer Structure; ORM 目 录 第一章 绪论 . 1 1.1 引言 . 1 1.2 国内外研究综述 . 1 1.3 本文的主要任务 . 2 1.
11、4 本章总结 . 3 第二章 代码生成技术 . 4 2.1 代码生成技术的概念 . 4 2.2 代码生成的实现技术 . 5 2.3 代码生成的优势和不足 . 6 2.4 本章总结 . 7 第三章 代码生成器设计理论 . 8 3.1 对象关系映射 . 8 3.1.1 对象关系映射的概念 . 8 3.1.2 使用对象关系映射的优点 . 9 3.2 三层架构介绍 . 9 3.2.1 三层架构的概念 . 9 3.2.2 三层架构之间的交互 . 10 3.2.3 数据访问层的设计 . 13 3.3 本章总结 . 15 第四章 代码生成器实例 . 16 4.1 项目开发背景 . 16 4.2 项目总体设计
12、 . 16 4.3 项目详细设计 . 21 4.3.1 生成基本代码模块 . 21 4.3.2 生成存储过程模块 . 26 4.3.3 生成脚本文件模块 . 29 4.3.4 代码编辑器模块 . 30 4.3.5 查询分析器 . 31 4.4 系统运行界面及运行结果 . 32 4.4.1 系统界面设计 . 32 4.4.2 运行结果 . 38 4.5 本章总结 . 42 第五章 总结 . 43 5.1 本文研究工作总结 . 43 5.2 代码生成技术展望 . 43 参考文献 . 45 致谢语 . 47 Contents Chapter 1 Exordium . 1 1.1 Introducti
13、on . 1 1.2 Researches Aroud The World . 1 1.3 Main Tasks . 2 1.4 Summary .3 Chapter 2 Code Generation Technology . 4 2.1 Concept Of Code Generation. 4 2.2 The Implemetaion Technology . 5 2.3 Advances and Disadvances . 6 2.4 Summary. 7 Chapter 3 The Design Theory of Code Generator . 8 3.1 Object Rela
14、tional Mapping . 8 3.1.1 The Concept of ORM. 8 3.1.2 The Advances of ORM . 9 3.2 Three-Layer Framework . 9 3.2.1 The Concept of Three-layer Framework . 9 3.2.2 Cooperation in Three-layer Framework. 10 3.2.3 Design of Data Access Layer . 13 3.3 Summary. 15 Chapter 4 Code Generator Sample . 16 4.1 Bac
15、kgroud . 16 4.2 General Design . 16 4.3 Detailed Design . 21 4.3.1 Code Generation . 21 4.3.2 Stored Procedure Generation . 26 4.3.3 Script Generation . 29 4.3.4 Code Editor . 30 4.3.5 Query Analyzer . 31 4.4 User Interface and Results . 32 4.4.1 User Interface . 32 4.4.2 Results . 38 4.5 Summary. 4
16、2 Chapter 5 Summary . 43 5.1 Summary for This Paper . 43 5.2 Future Prospects. 43 Reference 45 Acknowledgements. 47 绪论 1 第一章 绪论 1.1 引言 随着互联网的普及,网站开发的需求量也随之增加。 目前,在开发 网站 时,程序员在编写代码 的过程中 ,会 重复着一些不必要且耗时的技术性劳动;另一方面, 业务需求时常发生变化,使得程序开发和维护的难度大大提高。如何能够快速而又高质量的开发网站成为一个至关紧要的问题。 在长期的编程过程中,人们研究发现了一些代码的固定模式。如果可以
17、将这些固定模式的代码生成自动化,将会在一定程度上提高软件开发 的效率。于是,就 出现 了代码生成技术。它是一个专注于 提高编程效率 ,用程序来编程的研究方向。用代码生成工具生成代码不仅能够提高开发效率,而且能够保证代码风格的一致,大大提高代码的可读性和可维护性。 1.2 国内外研究综述 目前, 在 代码生成 技术 方面, 己经提出了许多 工程设计的模型和方法。这些模型和方法在 描述 用户界面或生成代码方面各有独特的见解。但很多模型和方法是用于直接描述用户界面,即是一种用户界面的编码手段,而不支持从需求分析到模型设计直至编码的全过程。这种方式使界面设计还是停留在手工编码和脑力劳动阶段。 FMP
18、模 型就是一种面向软件工程的用户界面设计和自动生成模型。它利用功能模型 ( F) 和对象模型 ( CM) 捕捉与界面相关的功能和数据信息,用交互模型 ( CM) 表达这些信息 及 控制关系。然后依据交互模型的描述,利用表示模型 ( P) 建立内部对象和外部显示元素的对应关系 来 规划界面布局,从而指导和实现用户界面的自动代码生成 1。 已经开发出来的代码生成软件, 主要 有三个类别 : (1) IDE 代码开发工具。 如 .NET 语言的开发工具 Visual Studio, Java 语言的开发工具 Eclipse,都能自动生成一些框架代码。 这些框架代码大都 与 业务逻辑无关,只是注重 窗
19、体和控件的初始化代码,在一定程度上方便了程序员的开发工 绪论 2 (2) 对象关系映射( Object Relational Mapping,简称 ORM 工具)。已经商业化的 工具有: Cocobase 公司的 Dynamic O/R Mapping 产品,它主要就是针对于 J2EE 体系结构 ,Visual Studio 2005 的 Alpha 版本中提供的ObjectSpaces 工具,它是在 ADO 数据层之上的 O/R Mapping 框架; ObjectMatter公司的 The Visual Business Sight Framework v 2.41(VBSF)支持对象到关
20、系数据库的自动存储 , 也支持 C/S 环境下的分布式对象的存储; Sun 公司的基于 JDO 开发的 O/R Mapping 工具。 (3) 基于网站开发的专业代码生成工具。 如 Hibernate(基于 Java 平台 )和 NHibernate(基于 .Net 平台 )这两款比较主流的网站代码生成工具。 Hibernate 是一个强大的,高性能的数据库映射工具,它能让开发者继续使用 Java 通常的开发习 惯,诸如派生、多态、组合和 Java 集合框架等来开发持久对象层 ; 同时它还提供一个精简的面向对象的 SQL 语言扩展,而且支持 几乎 目前所有的主流应用的数据库。 NHiberna
21、te 是一个基于 .NET 环境的对象关系数据库映射工具。 NHibernate来源于非常优秀的基于 Java 的 Hibernate 关系型持久化工具。 NHibemate 很好的实现关系型数据库到面向对象实体的映射,并且提供数据查询和获取数据的方法,从而大幅度减少开发时人工使用 SQL 和 ADO NET 处理数据的时间,提高了效率和安全性 2。 本文主要结合后两 类代码生成工具的特点, 采用相应的代码转换技术, 开发一款基于 .NET 平台的,结合经典的三层架构 和对象关系映射思想 ,适合中小型网站开发的代码生成工具 SmartGenerator。 1.3 本文的主要任务 本文通过对代码
22、生成技术的理论基础进行分析,设计并实现了一个代码生成器实例。其主要任务如下: (1) 介绍代码生成技术的概念 、 特点,以及它的优势和不足。分析在代码生成中可以采用的技术方法和 它 们的优缺点。 (2) 研究经典的三层架构,抽象出其中固定的模式。同时介绍了对象关系映绪论 3 射 ( ORM) 的思想和它在代码生成中的作用。 (3) 提出一个代 码生成器的实现。介绍其整体架构和详细设计方法,并给出相应的实现效果。 (4) 总结本论文的研究工作,并对未来的代码生成技术提出构想。 1.4 本章 总 结 本章主要介绍了代码生成技术的一些背景知识。首先阐述了当 前 代码生成的需求,接着介绍了国内外代码生成方面的研究方向以及相应的软件产品和特点,最后对本文所要完成的任务做了一个概述。