java delphi 三层_DELPHI三层架构设计方案

本文探讨了DELPHI三层架构的设计方案,重点关注业务层的解耦和接口设计。通过定义IBusinessService接口,实现了通用的数据存取方法getvoList,介绍了业务对象名称、服务名称和返回值的作用。此外,还提到了服务定位层和业务对象池的管理,提供了一种灵活应对业务变化的方式。
摘要由CSDN通过智能技术生成

《DELPHI三层架构设计方案》由会员分享,可在线阅读,更多相关《DELPHI三层架构设计方案(6页珍藏版)》请在人人文库网上搜索。

1、随便说说最近项目中的三层架构吧。讲点实际的东西。我最讨厌空讲道理。网上讲道理的太多了,不喜欢举例子。 大多数文章中都或多或少的讲到了三层架构。表示层,业务层,数据层。又把业务层 再细分,分为外观服务层,主业务服务,及数据库库服务层。今天主要讨论一下业务层吧。举个最简单的例子。客户端获取数据。 业务层要与表示层尽量解藕, 我的方法是:首先我们在中间层 TLB_ 中定义一个接口 IBusinessService, 定义一个方法。 getvoList ,我要得到一个 VO 的列表, VO 即 ValueObject, 例如:TValueObject= class(TPersistent)privat。

2、eb_insertFlag :Boolean;b_updateFlag :Boolean;b_deleteFlag :Boolean;d_rowVersion :double;procedure setInsertFlag(pInsertFlag :Boolean);function getInsertFlag: Boolean;procedure setUpdateFlag(pUpdateFlag :Boolean);function getUpdateFlag: Boolean;procedure setDeleteFlag(pDeleteFlag :Boolean);function g。

3、etDeleteFlag: Boolean;procedure setRowVersion(pRowV ersion :double);function getRowV ersion:double;protectedfunction GetOLEData: OleV ariant; virtual;procedure SetOLEData(const Value: OleVariant); virtual;publishedproperty bInsertFlag: Boolean read getInsertFlag write setInsertFlag;property bUpdateF。

4、lag: Boolean read getUpdateFlag write setUpdateFlag; property bDeleteFlag: Boolean read getDeleteFlag write setDeleteFlag; property dRowVersion: double read getRowV ersion write setRowV ersion; property POLEData:OleV ariant read GetOLEData write SetOLEData; end;TUserVO = class(TV alueObject)privatei。

5、d: string;name: string;password: string;。VO 的列表:TValueObjectList = Class(TObjectList)privateValueObject: TV alueObject;ClassName: TClass;procedure setClassName(pTmpClsName :TClass);function getClassName: TClass;procedure setValueObject(pTmpVO :TV alueObject);function getV alueObject: TV alueObject;p。

6、rotectedfunction GetOLEData: OleV ariant; virtual;procedure SetOLEData(const Value: OleVariant); virtual;publishedfunction AddItem(index: integer; AObject: TObject ):Integer; virtual;function GetItem(index, itemid: integer ): TObject; virtual;function CountItem:Integer; virtual;publicconstructor Cre。

7、ate; virtual;destructor Destroy; override;procedure AfterConstruction; override;property PClassName: TClass read getClassName write setClassName;property POLEData: OleV ariant read GetOLEData write SetOLEData; property PValueObject: TV alueObject read getValueObject write setV alueObject;end;TValueO。

8、bjectList 就是 VO 的装载器。在 JAVA 中有一个好听的叫法,VOList 值列表组装器,具体的功能是可以管理VO , 当然你可以进行扩充,比如后来我加入了 OLETOBJECTTDataset 互换的功能。主键生成机制,分页存取功能,生成子集功能,及懒装载功能,压缩传输流功能等,同步数 据更新问题等。这要你自己去发挥吧。说了这么多,话题转回来吧。现在说客户端怎么去存取数据。 在前面中间层已经定义了 IBusinessService, 定义一个方法。 getvoList ,这个就是通用存取数 据的接口了。下面看看他的完整形式:procedure getvoList(const s。

9、BOName: WideString; const sBOService: WideString; out voListObj: OleV ariant);这里有三个参数, sBOName:sBOService:voListObj: 干什么用的?第一个就是业务对象名称, 第二个是业务对象服务名称, 第三个是传回来的 olevariant;强调一点。 sBOName:sBOService: 这两个参数并不直接对应中间层的业务对象。之间 加了一个转换层。也就是 service 定位层。这个东西把客户传来的两个参数定位到相应的业务对象中。 有什么好处呢。 其实就相当于客户端和中间层的一个简单的协议,。

10、 客户端发一个bon ame,个服务名,这都是约定的。也就是不变的。以后该业务要变,就十分方便,只需要在中间层的定位器,配置一下就可以了,如果采用 XML 或文件配置,不需要修改任何程 序,客户的业务已经发生改变。当然会采用名字调用等技术了。相关代码如下:TBOService= class(TServiceObject)private/srvOBName : String;IBasBO: IBaseBO;BOPool: TBOPrototype; / 业务对象持久池:publicconstructor Create;procedure getvoList(const sBOName: Wide。

11、String; const sBOService: WideString;out voListObj: OleV ariant); safecall;。再说说 TBOPrototype 吧 ,这个东西是管理业务对象池的。 由他统一创建业务对象。 用的是单例模式。之后具体的调用,相关代码如下:if FindClass(fClsPer.ClassName) nil thenShowMessage(ss as TUserVO).pName); 之后,你想怎么样就怎么样了。 。呵呵,下次再讲讲业务逻辑方面吧,希望给做DELPHI 三层的兄弟一个参考。我的QQ:11718111Email: wu_yanan2003yahoo.com.cn。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MateyFrame是一款由Delphi开发的三层架构框架,经过多年的升级改进,版本由MateyFrame V1.0升级到了当前的MateyFrame V5.0版本。MateyFrame V5.0具有功能强大、负载量大、安全性高、可扩展性强、同时支持B/S与C/S运行模式、开发简单等特性。MateyFrame V5.0由中间层服务端、客户端框架、MateyWeb组件三部分组成,同时支持 Oracle、MSSQL、MySQL数据库。 中间层服务端 采用面向对象方法设计而成,具有稳定性强、安全性高、负载量大、可扩展性强等特性。 采用数据库连接池技术,支持多数据库应用及多种数据库的应用,可以很好的处理断网、数据库重新启动等异常情况,一旦外界环境恢复后,连接池将重新连接数据库,不需要重启服务程序。 使用HTTP协议与客户端进行通信,可以适合企业内网及企业外网等任何网络环境,更适合在Internet网络上运行程序。 服务端支持多种类型的大型数据库一起使用,支持的数据库有:Oracle、MSSQL、MySQL。 服务端采用插件技术开发,系统核心插件可以直接使用,另外用户可轻松地扩展自己需要的服务插件。 服务端采用会话管理技术,为每个客户端会话分配唯一的加密密钥,交互数据在底层进行加密传输,保证了数据在传输过程中的高安全性。 服务端支持多实例运行模式,当客户端用户量大增时,可以适当增加中间层实例,解决大并发量的问题。 服务端插件实现了真三层、伪三层的核心插件,用户可以根据安全级别选用任何一种模式进行应用。 服务端使用Win服务运行模式,重启服务器不需登录系统开启服务程序,服务端即可自动运行。 具有客户端程序发布功能,可以为客户端软件的自动更新服务。 客户端框架 客户端设计成 EXE+BPL+DLL 的文件结构模式,具有扩展性强、易于开发、易于维护、使用简单等特点; 程序框架同时支持B/S、C/S模式,即可以通过客户端运行程序,也可以通过浏览器运行程序,并且支持两种模式同时存在。 使用插件开发模式,业务功能根据实际需要封装在不同的模块 DLL 中,即插即用; 封装了强大的基类,底层数据访问、出错处理、权限控制等; 系统功能根据业务模块信息自动生成,可以手动配置功能菜单列表; 框架中包含用户及权限管理插件,拿来即用,此模块可严格控制各功能Form 的详细权限(添加、修改、删除)、特殊数据的读取权限; 框架中包含了数据字典、系统参数的设置功能,拿来即可用。 框架采用调用时下载相关依赖文件的模式进行程序更新,具有更新文件少、更新速度快等特点; 框架支持程序文件流加载模式,更新的程序文件不需要保存在客户端的机器上,可大大增强程序的安全性。 框架有设计模式与运行模式之分,在设计模式下客户端通过框架功能用SQL可以直接读取到数据库的数据,方便程序开发;但在运行模式中,此功能不可用,这样可以保证数据的安全性。 框架设计了通用的报表设计模块,用户只需简单调,就可以得到自己所需要的报表模板设计,得到功能所需要的报表。 可选用分页数据处理技术,使大批量数据分页返回,分解服务器的压力; 具有负载平衡的功能,当连接的中间层服务器端负载过大或者崩溃时,会自动转向其它可用中间层服务器。 具有断线重连功能,当网络的异常恢复时,系统底层连接会重新连接,不用重启程序就可使用。 框架提供超级查询组件,组件可以根据编号、名称、五笔码、拼音码对需要查询的数据进行快速过滤。 MateyWeb组件 MateyWeb组件是一款能被IE加载运行的ActiveX控件,它是客户端程序在B/S模式下运行的载体。 MateyWeb组件支持WinXP、Win2000、Win2003、Win7、Vista等操作系统。 MateyWeb组件支持IE及以IE为内核的所有浏览器。 应用场合 非常适合开发各种应用于Internet之上的大中型的MIS管理软件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值