您好,欢迎访问三七文档
三层系统架构方案说明:在软件开发方法日益成熟的今天,很多公司都推出了平台化开发方案。然而,虽然平台化考虑了整个系统架构的方方面面,但它却有实现非常复杂、维护非常麻烦、继承使用不灵活等缺陷。于是,我就有了一个想法,能否开发一个轻型的系统架构,它能实现重要的技术方案,然而实现不是很复杂、维护不是很麻烦,继承使用也很灵活。我朝着这个方向发展,最终实现了这种需求的系统架构。内容概要:概述:本系统架构是采用RemObjectSDK技术研发的三层系统架构,由应用服务器、客户端框架和数据库三部分组成。服务器:采用面向对象方法设计而成,具有稳定性强、安全性高、负载量大、可扩展性强等特性。采用数据库连接池技术、服务对像池技术和多端口监听等技术,使服务器的功能即强大又稳定。已实现数据库操纵接口(对数据库进行各种操作)、广播消息接口、自动更新服务接口,另外用户可轻松地扩展自己需要的服务功能。客户端:采用面向对象方法设计而成,具有扩展性强、易于维护、学习简单等特点。设计为插件模块,即插即用,即可自动生成菜单,又可手动调整;已开发用户权限管理,拿来即可用,可严格控制客户端界面的权限,如(添加、删除等);包括自动更新下载,随时都可以发布新的版本,客户端登录就可更新;包括换皮肤功能,客户端界面非常美观;客户端使用分页数据处理,让服务器沉受力更强;客户端的网格具有自动排序功能,列头信息可调整保存客户端有接收消息和发送消息功能,可与其它登录客户端进行消息通信。开发了三个基类,分别用于不同用途的扩展继承(权限管理基类:用于注册Form所包含的权限,如增加、删除;单表操纵基类:用于对单表进行增删改查等相关数据表操作,严格控制操作状态;主从表操纵基类:用于对单表进行增删改查等相关数据表操作,严格控制操作状态),从此三个类继承,稍做初始化赋值,就能完成相应的功能,也可以对方法进行重载,照自己的思路去开发。客户端基类图:主要界面演示:应用服务器:权限基类:TBaseSecurityfrm单表操纵基类:TBaseDatafrm主从表操纵基类:TBaseMasterDetailfrm数据编辑基类:TBaseDataEditfrmm扩展菜单基类:TBaseMenufrm客户端主界面:打开的子窗体:系统功能调整界面:主从操纵表客户端目录及配置文件:客户端自动更新界面:角色权限分配:用户角色分配:基类及公共类简要说明:1、权限基类:TbaseSecurityfrm权限基类主要有二大功能,一:初始化窗体的权限点(如:添加、删除等);二:初始化窗体的菜单相关属性(如:双亲、功能名、位置)。有以下属性:propertyRightList:TFuncRigthreadFRightList;//权限管理列表propertyFunctionID:stringreadFFunctionIDwriteFFunctionID;//功能IDpropertyParentID:stringreadFParentIDwriteFParentID;//菜单的双亲IDpropertyFunctionName:stringreadGetFunctionName;//功能名称propertyPosIndex:IntegerreadFPosIndex;//菜单中同一级的顺序号propertyImageIndex:IntegerreadFImageIndex;//菜单中的图标序号以上属性,除RightList、FunctionName外,其它属性都需要在继承窗体的OnCreate中初始化值,其中FunctionID必须在项目中唯一。有以下方法:procedureInitFunctionRight;virtual;//初始化Form的权限参数procedureGetUserFunctionRight;virtual;//取得用户功能权限窗体可以自定义权限点,需在InitFunctionRight中添加,如:FRightList.AddRight('Access','访问');如何保存登录用户对窗体的使用权限,需要覆盖GetUserFunctionRight来实现,如:FRightList.AddHasRight(psName);2、单表操纵基类:TbaseDatafrm单表操纵基类,主要实现对数据表的操纵和严格控制操纵时各控制的状态。有以下属性:propertyEditClass:TBaseDataEditClassreadFEditClasswriteSetEditClass;//编辑Form类propertyTableName:stringreadFTableNamewriteFTableName;//表名propertyPKFields:stringreadFPKFieldswriteFPKFields;//主键名,如有多个用;隔开propertyQuerySQL:StringreadFQuerySQLwriteFQuerySQL;//表名、视图名、查询语句propertyPageSize:integerreadFPageSizewriteFPageSize;//每页的大小(行数)propertyCurrPage:integerreadFCurrPagewriteFCurrPage;//要显示的当前页propertyPageCount:integerreadFPageCount;//总页数propertyTotleRecord:IntegerreadFTotleRecord;//总记录数propertyGridCanEdit:BooleanreadFGridCanEditwriteFGridCanEdit;//Grid能够编辑propertyCanEditGridCol:Boolean;//Grid列是否可编辑保存propertySpiltGetPage:BooleanreadFGetPagewriteFGetPage;//是否分页取数据propertyNoUpdateFields:stringreadFNoUpdateFieldswriteFNoUpdateFields;//不更新的字段列表,如有多个字段用;隔开如果要对数据表进行编辑操作,必须对TableName、PKFields赋值,如果只是查询操作,则只需对QuerySQL赋值即可。如果想在Grid中进行数据编辑,需对GridCanEdit赋值true,否则,需对EditClass赋值,EditClass必须是继承于TbaseDataEditfrm的子类。如果想重新设置页大小,需设置PageSize的值,所有属性如要赋值都需在窗体的OnCreate中赋值。有以下方法:procedureChangeMasterStates(pbCanModify:Boolean);virtual;//改变编辑表的控件状态procedureGetPageData;//取得分页数据procedureGetUserAction(psName:string);//取得登录用户拥有的权限如果用户想调整操纵数据时各控件的使用状态,需要覆盖ChangeMasterStates方法,对相关状态进行控制。3、主从表操纵基类:TbaseMasterDetailfrm主从表操纵基类主要实现了对主从数据表的操纵控制处理。有以下属性:propertyGridDetEdit:Boolean;//从表GRID可以编辑propertyDetTableName:string;//从表名propertyDetEditClass:TbaseDataEditClass;//编辑从表的窗体类propertyDetPKFields:stringreadFDetPKFieldswriteFDetPKFields;//从表主键继承于TbaseMasterDetailfrm的子类,除了要对它的父类相关属性赋值外。有以下方法:procedureChangeDetStates(pbCanModify:Boolean);virtual;//改变编辑从表的控件状态procedureOpenDetDataSet;virtual;abstract;//打开从表数据集注意点:主表数据集滚动时,会执行OpenDetDataSet方法,所以取主表的从表数据,需在这个方法中实现。4、数据编辑基类:TBaseDataEditfrm数据编辑基类用于编辑单条数据记录。有以下属性:propertyModifyState:TModifyStatereadFModifyStatewriteSetModifyState;//状态propertyDataSet:TDataSetreadFDataSetwriteSetDataSet;//修改数据集propertySoonSave:BooleanreadFSoonSavewriteFSoonSave;//立刻保存有以下方法:procedureVerifySaveData;virtual;//校验保存数据合法性procedureSetDataValue;virtual;//初始化其它信息注意点:如果要在保存之前对数据进行校验,需覆盖VerifySaveData方法。5、扩展菜单基类:TBaseMenufrm扩展菜单基类用于扩展每个模块功能的父级菜单和分隔符。有以下方法:procedureAddDirAndSpile;virtual;//添加目录和分隔符procedureAdd(psFuncID,psParentID,psFuncName:string;piPos,piImgIndex:Integer;piFuncType:TFuncType);//添加一个菜单功能注意:每一个子系统都必须实现一个TbaseMenufrm的子类,用于扩展该子系统的菜单功能树,每个继承子类都需覆盖AddDirAndSpile方法,添加相关菜单项。6、本地数据操纵对象:TLocalSQL本地数据操纵对象是一个访问服务器对应服务方法的本地对象,在系统初始化时,就初始化了一个可以直接调用的实例。它有以下调用方法://根据SQL语句取数据集functionSelectData(constSQL:String;outData:Variant;outErrMsg:String):Integer;//根据两条SQL语取两个数据集functionSelectDupleData(constSQLA:String;constSQLB:String;outDataA:Variant;outDataB:Variant;outErrMsg:String):Integer;//执行需要事务的SQL语句functionExecuteSQL(constSQL:String;outErrMsg:String):Integer;//执行存储过程functionExecuteProc(constProcName:String;constParamArr:ParamArray;constRetRecord:Boolean;outRetParamArr:ParamArray;outData:Variant;outErrMsg:String):Integer;//更新单表数据集functionUpdateData(constDelta:Variant;constTableName:String;constKeyFields:String;outErrMsg:String):Integer;//更新两个表的数据集functionUpdateDupleData(constDeltaA:Variant;constTableNameA:String;constKeyFieldsA:String;constDeltaB:Variant;constTableNameB:String;constKeyFieldsB:String;outErrMsg:String):Integer;//执行SQL命令及更新另一个表的数据functionUpdateSQLAndData(con
本文标题:三层系统架构方案
链接地址:https://www.777doc.com/doc-5375733 .html