为了让大家更深入的了解和使用C#,我们开始这一系列的主题为“C#发现之旅 ”的技术讲座。考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所 不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用。目前规划的主要内 容是图形开发和XML开发,并计划编排了多个课程。在未来的C#发现之旅中,我们按照由浅入 深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进 行软件开发,拓宽我们的视野,增强我们的软件开发综合能力。
本课程说明
经过以前的学习,我们大体上了解了XML/XSLT开发,在本课程中,我们将在ASP.NET中使用C# 开发一个基于XSLT技术的代码生成器。
代码生成器
首先说说什么是代码生成 器。个人认为是一种工具软件,它能根据某种已经固定的信息,使用程序来机械的大批量的 生成有结构上有比较简单规律的源代码,从而减少软件开发人员的编码量。
从广义上 讲,我们写的WEB数据库程序都是代码生成器,它们能根据保存在数据库中的固定数据自动生 成大量的HTML代码。在这里我们限制代码生成器为通用代码生成器。代码生成器主要功能是 帮助程序员自动生成大量的底层代码,这种代码可以是C#或Java的程序源代码,也可以是SQL 语句,或者HTML代码等等,是一种软件开发过程中的辅助工具软件。
我们最常用的代 码生成器是根据数据库结构自动生成能操作数据库记录的程序源代码,SQL语句或其他文档等 等。对于这种代码生成器,其数据信息来源就是数据库的表结构和字段属性等信息,我们可 以分析遍历数据库的系统表来货的表结构和字段信息,也可以从PowerDesigner等数据结构设 计器保存的文档中获得。
针对某个特定的项目,我们可以根据数据库结构临时写一个 代码生成器,使用字符串拼凑来生成源代码,但这种代码生成器不通用,难于用于其他项目 。因此我们更多的是使用通用的代码生成器。
很多通用代码生成器的原理如图
在这个图中,我们看到代码生成器包含了模板库和代码生成器处理引擎,模板库包 含了若干个模板,一个模板一般是纯文本,其中可能包含了脚本代码,或者类似ASP的结构。 生成器引擎加载一个或者多个数据库表结构设计信息,然后调用用户指定的模板,通过某种 操作来自动生成另外一个文本文件,这个文本文件内容可以是纯文本,HTML代码,C#代码或 者其他。
考察这个结构,可以发现这个原理和XSLT原理很相似。我们可以将数据库表 结构设计信息保存在一个XML文档中,代码生成器模板就使用XSLT格式,代码生成器引擎就使 用XSLT转换引擎,这样我们也可以达到代码生成器的功能,从而搞出基于XSLT的代码生成器 。