代码生成的过程是一个将某种形式的组织结构的软件框架或体系,通过一种的映射规则,转换生成以某种高级语言为程序实现的过程。
开发目的:
开发公司内部用的代码生成器,为公司内部在代码实现阶段,提供快速而有效的辅助。
已有功能:
生成单一表的Model以及相关的操作类
当前阶段要实现主要功能:
1. 实现对多表操作,建立较完善的多Model的层次结构及相关的映射。
2. 自定义制定方法,生成DAL层相关的一些方法的操作。
未来将要达到的功能:
项目管理:
针对某个库(一般是指一个库),建立一个项目, 在这个项目中:①包含了对所有要生成的Model的管理, 自定义的 和非自定义 来自系统表的.②对所有要生成的Dal层类和方法的管理,需要生成什么类,有什么方法,通过对DAL层的管理可以对类的修改编辑,可以对方法的制定如修改参数等和自制定等.
项目的导入导出功能,通过导入导出,将项目工程的全部信息,导出到文件中,建议采用Sql Server.导出xml流的方式导出,而导入可以将项目相关的数据导入到数据库中。
生成界面:
生成界面不是指生成任意的界面,而是根据一定的编码准则,和一定的编码模板,去生成一定风格的界面。在这个过程中关键的技术点在于如何定义生成过程中的“关节”部分,也就是指,是直接通过控制生成的模块部分生成不同的代码,还是通过生成可配置的代码以及生成可修改的配置文件(如CSS文档)来控制生成的代码界面,还是说这两者都希望采用。
另外的一个技术难点是,当确定“关节”部分所在的位置后,如何定义生成可用于扩展的通用的规则库,即为,根据什么样的规则,生成什么的界面代码。
支持多数据库:
从实现的角度上说,要实现支持多数据库,首先是要在结构上分层,目前的代码框架,然后已经分过了层,数据层已经分离出来,但是整体实现工厂模式却并不是特别的清楚,鉴于目前掌握的技术来说,以实现为主,优化放到重构阶段比较的合适。
支持多种数据构架:
目前系统实现的构架,是采用了PetShop三层模式的方式生成,这种模式适用与某些网站B/S架构的实现,但是,在另外的一些B/S系统和其他的一些软件中,这种模式可能不太合适,这个时候需要一种新的合适的方式进行编码,如何才能兼容新的软件框架生成器,也是一个亟待考虑的事宜。
友好的操作界面:
这里的友好的操作界面,首先是指软件的外观是十分的人性化的,另外很重要的一点是指,在软件的操作过程中,其中有一部分的操作,可能会比较的繁琐,如:因为技术等原因,无法开发自定义控件,而改用其它的一些常用控件组合使用。 在掌握一定的技术后,可以尝试改用自定义控件,以提高友好的程度。
实现WebServices
改良后的软件框架,不完全采用传统的C/S开发方式。而是采用基于服务的模式。把主要的业务逻辑放到服务器上运行。
相关模块的解决方案
生成多Model的构架:
从单一的单表对Model,转化为 Model嵌套。
生成基本方法:
生成对本Model的添、删、查、改的操作方法
生成自定义方法:
生成自定义的方法是本系统的难点和重点,是核心所在。自定义的方法需要的元素有
说明 红色是本次重点重点实现的部分
保护级别:public protect private
返回值类型:① void , string, char , int ,byte….. 系统自带类型
② string[] char[] int[] 系统自带类型复合类型
③ ModelInfo 自定义类型
④ ModelInfoList<>
参数类型 :
单一参数
① string, char , int ,byte….. 系统自带类型
② string[] char[] int[] 系统自带类型复合类型
③ ModelInfo 自定义类型
④ 无参数
` 复合参数:
⑴ ① + ① 类型
⑵ 其它
过程实现:
㈠ 即时生成SQL法
五种方式:
① select 返回单一值
② select 返回多组值
③ insert
④ update
⑤ delete
返回值-参数-过程组合方式:
返回值类型 |
参数类型 |
过程实现方法 |
系统自有类型 void |
自定义Model |
Insert Update Delete |
自定义类型IList<ModelInfo> |
系统自有类型 int 无参 |
Select 多行结果集 |
㈡ 根据存储过程匹配法
技术难点:方法的参数 和存储过程的参数 进行合理的匹配。
需要实现两种解决
1 |
生成方法的参数,与存储过程的参数一一相对 |
易,但不好用 |
2 |
用table的model做为参数,再给存储过程的参数一一赋值 |
生成SQL代码模块
根据统一的数据接口定义生成相关的sql
生成界面代码模块:
采用DOM生成代码,建立和设计DOM树和相关的接口
需要完善的系统架构工作
数据库的设计部分:
项目的管理模块
自定义的函数部分
主要代码构架部分
统一接口定义
设计SQL存储过程生成模块
开发阶段与目标:
第一阶段的目标:
熟悉代码生成内部构架,掌握代码生成机制、以及统用构架的全局定义的规范。
要求:清楚理解各个模块的部分。
第二阶段的目标:
建立新的软件外部框架,并开始细化代码生成的各个部分功能。
要求:有初步的模型
第三阶段的目标:
并且能提出较为合理的扩展方案,