• 代码生成器开发设计


     

     

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

    开发目的:

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

    已有功能:

    生成单一表的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存储过程生成模块      

     


     

    开发阶段与目标:

    第一阶段的目标:

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

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

    第二阶段的目标:

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

           要求:有初步的模型

    第三阶段的目标:

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

  • 相关阅读:
    Codeforces1499D The Number of Pairs
    Codeforces1493D GCD of an Array
    AtCoder Beginner Contest 192 F
    Codeforces 1485F Copy or Prefix Sum
    Miller_Rabin
    Codeforces Round 655 (Div. 2) E
    Codeforces Round 655 (Div. 2) D
    B
    A
    待更新笔记
  • 原文地址:https://www.cnblogs.com/lxf120/p/624980.html
Copyright © 2020-2023  润新知