代码生成器开发设计

来源:互联网 发布:买大牌的软件 编辑:程序博客网 时间:2024/05/01 09:50

代码生成的过程是一个将某种形式的组织结构的软件框架或体系,通过一种的映射规则,转换生成以某种高级语言为程序实现的过程。

开发目的:

       开发公司内部用的代码生成器,为公司内部在代码实现阶段,提供快速而有效的辅助。

已有功能:

生成单一表的Model以及相关的操作类

当前阶段要实现主要功能:

1.        实现对多表操作,建立较完善的多Model的层次结构及相关的映射。

2.        自定义制定方法,生成DAL层相关的一些方法的操作。

 

未来将要达到的功能:

项目管理:

针对某个库(一般是指一个库),建立一个项目, 在这个项目中:①包含了对所有要生成的Model的管理, 自定义的 和非自定义 来自系统表的.②对所有要生成的Dal层类和方法的管理,需要生成什么类,有什么方法,通过对DAL层的管理可以对类的修改编辑,可以对方法的制定如修改参数等和自制定等.

项目的导入导出功能,通过导入导出,将项目工程的全部信息,导出到文件中,建议采用Sql Server.导出xml流的方式导出,而导入可以将项目相关的数据导入到数据库中。

 

生成界面:

       生成界面不是指生成任意的界面,而是根据一定的编码准则,和一定的编码模板,去生成一定风格的界面。在这个过程中关键的技术点在于如何定义生成过程中的“关节”部分,也就是指,是直接通过控制生成的模块部分生成不同的代码,还是通过生成可配置的代码以及生成可修改的配置文件(如CSS文档)来控制生成的代码界面,还是说这两者都希望采用。

       另外的一个技术难点是,当确定“关节”部分所在的位置后,如何定义生成可用于扩展的通用的规则库,即为,根据什么样的规则,生成什么的界面代码。

 

支持多数据库:

       从实现的角度上说,要实现支持多数据库,首先是要在结构上分层,目前的代码框架,然后已经分过了层,数据层已经分离出来,但是整体实现工厂模式却并不是特别的清楚,鉴于目前掌握的技术来说,以实现为主,优化放到重构阶段比较的合适。

 

支持多种数据构架:

       目前系统实现的构架,是采用了PetShop三层模式的方式生成,这种模式适用与某些网站BS架构的实现,但是,在另外的一些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

tablemodel做为参数,再给存储过程的参数一一赋值

 

 

生成SQL代码模块

       根据统一的数据接口定义生成相关的sql

 

生成界面代码模块

       采用DOM生成代码,建立和设计DOM树和相关的接口

 

 

需要完善的系统架构工作

数据库的设计部分:

       项目的管理模块

       自定义的函数部分

主要代码构架部分

       统一接口定义

       设计SQL存储过程生成模块      

 


 

开发阶段与目标:

第一阶段的目标:

       熟悉代码生成内部构架,掌握代码生成机制、以及统用构架的全局定义的规范。

要求:清楚理解各个模块的部分。

第二阶段的目标:

       建立新的软件外部框架,并开始细化代码生成的各个部分功能。

       要求:有初步的模型

第三阶段的目标:

并且能提出较为合理的扩展方案,

 
原创粉丝点击