基于Delphi的三层数据库系统的实现方法

 

摘要随着中间件与Web技术的发展,三层或多层分布式应用体系越来越流行。而中间件作为分布体系应用的关键技术,以其独特的优势为各种
摘要随着中间件与Web技术的发展,三层或多层分布式应用体系越来越流行。而中间件作为分布体系应用的关键技术,以其独特的优势为各种分布式应用的开发注入了强大动力,极大地推动了应用系统集成的发展。论文描述了基于Delphi中间件的三层结构访问数据库信息的方法。

关键词三层结构;中间件;连接技术;数据库应用系统

作者简介:邵泳兵,女,广东南海人,硕士,助教

1引言

当前的数据库应用系统中,按其结构划分为两类,一类是两层结构的数据库应系统,另一类是多层结构的数据库应用系统。

两层结构的数据库应用系统包括客户/服务器模式和浏览器/服务器模式,它的特点是数据和程序分离,数据库服务器端治理数据,客户机或浏览器显示、访问和更新数据,因此可以分别进行开发和维护,同时也降低了数据库服务器的工作量,减小了网络的流量,具有较强的安全性,但当客户端程序或浏览器较多时,服务器的性能会明显下降,而且应用逻辑安装在每个客户机上,假如系统要升级,就只能对客户机逐一进行,假如客户机分布在不同的地点,维护和升级任务将非常繁重。为了解决两层结构应用系统的不足,人们提出了多层数据库应用系统的结构模式,具有代表性的是三层结构。

2三层系统的体系结构

所谓三层结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。在这种体系结构中,客户机只存放表示层软件,后台是数据库,业务逻辑包括事务处理、监控、信息排队、Web服务等采用专门的中间件服务器,大大减少了与数据库服务器连接的次数。通常情况下客户端通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互,客户端与数据库隔离,提高了整个系统的可靠性。在三层系统体系中,系统资源被统一治理和使用,用户可以通过网格门户透明地使用整个网络资源。它的体系结构如图1所示。

三层结构功能如下:

表示层:提供简洁的人机交互界面,负责数据显示和客户端的数据处理,由客户机实现;

功能层:实现业务逻辑,即实现客户与数据库对话,同时,在这一层中,还应实现分布式治理、负载均衡、安全隔离等;它是一个远程模块,由应用服务器来实现;

数据层:负责数据治理,提供数据的存储服务,由数据库服务器来实现。

三层结构的主要特点:安全性。中间层隔离了客户直接对数据服务器的访问,保护了数据库的安全。稳定性。三层分布式体系提供了更可靠的稳定性:中间层缓冲Client与数据库的实际连接,使数据库的实际连接数量远小于Client应用数量。当然,连接数越少,数据库系统就越稳定。易维护。由于业务逻辑在中间服务器,当业务规则变化后,客户端程序基本不做改动。快速响应。通过负载均衡以及中间层缓存数据能力,可以提高对客户端的响应速度。系统扩展灵活。基于三层分布体系,当业务增大时,可以在中间层部署更多的应用服务器,提高对客户端的响应,而所有变化对客户端透明。

 

 

3三层系统的连接技术

3。1前端连接技术

在三层数据库应用系统中,客户端与应用服务器端常处于不同的物理区域,它们之间的数据传送成了影响系统运行效率最关键的技术。在Delphi中要建立与应用服务器的连接,客户程序必须使用一个或几个DataSnap连接组件,以及ClientDataSet等组件。首先DataSetProvider组件把读取的DataSet数据源压缩并切割成一段一段的数据包,通过各种传输协议如DCOM、TCP/IP、HTTP协议传给前端,前端的DataSnap连接组件会把接受到的数据包再还原成DataSet传给ClientDataSet组件,DataControl组件就可以将ClientDataSet作为数据源对它进行操作。

DataSnap技术是Delphi开发多层数据库应用系统的核心技术,它不但提供了基于DCOM、TCP/IP、HTTP三种传输协议的数据传送方式,还通过SimpleObjectBroker组件使系统轻易具备容错能力和负载平衡能力,使得Delphi开发的多层应用系统不但结构简洁、执行效率高、应用范围广,而且安全稳定,而且现在DataSnap还能够同时在Windows和Linux上执行。

3。2应用服务器与数据库的连接ADO

ADO是Microsoft存取通用数据源的标准引擎,它通过封装OLE-DB来存取各种不同的数据,OLE-DB定义了统一的COM接口作为存取各类异质数据源的标准,藉由OLE-DB,程序员就可以使用一致的方式来存取各种数据,但OLE-DB太底层化,在使用上非常复杂,而ADO组件以COM技术封装OLE-DB为ADO对象,大量简化了程序员开发数据存取的工作,同时许多厂商也推出了ADO驱动程序,使得ADO应用日趋广泛。

4实现方法

本例使用DCOM协议,系统模型如图2所示。

应用服务器是一个远程数据模块,它是一个COM程序,它通过ADO与SQL语句和数据库服务器连接。它负责从数据库服务器存取数据并通过DataSetProvider组件将数据分割成数据包,然后通过DCOM协议传递到网络上的客户端。客户端的组件负责还原数据,这项工作由DCOMConnection来完成。ClientDataSet组件是客户端数据集组件,它负责接收DCOMConnection组件还原过来的数据,并把数据传递给客户端数据处理组件,客户端数据处理和显示组件主要有ADOQuery、ADOTable、DataSource、DBGrid、DBEdit、DBComboBox等等,反过来,ClientDataSet组件负责收集客户端处理的数据,并把处理后的数据提交DCOMConnection组件,该组件通过DCOM协议和应用服务器正确地将数据写入数据库DB。

 

 

以显示学生数据库中学生基本信息表为例,具体地用Delphi语言实现步骤如下。

4。1创建数据库

在E盘建立文件夹E:“学生课程治理,在该文件夹中创建Access数据库Student。mdb,包含表jbqk、course、teacher、sle_course,jbqk表中设置主键为number,以备查询之用。建立的表如图3所示。

 

 

图3学生基本情况表jbqk

4。2建立应用服务器程序

建立一个应用程序,在窗体上添加ADOConnection1、ADOTable1、DataSource、DBGrid1四个组件,设置这四个组件的属性。

ADOConnection1的ConnectionString属性设置为Student。mdb,LoginPrompt属性设置为false,ADOTable1的Connection属性设置为ADOConnection1,TableName属性设置为jbqk,Active属性设置为true。保存所有文件,项目文件名为AppServer,单元文件名为Server1。

新建一个远程数据模块,设置类名为rdstu,在它的Uses子句中添加Server1,这样rdstu模块就可以访问Server1里面的组件了。在模块中添加组件DataSetProvider,设置它的DataSet属性为Form1。Table1,这样可以将本地数据读到DCOM服务器上,并由DataSetProvider组件提供给客户端。保存单元文件,命名为Server2。

运行程序后,系统自动在服务器注册程序,当有客户端程序运行时,系统会自动启动服务器程序。

4。3建立客户端程序

为了方便描述,这里把客户端程序和服务器程序放在同一台电脑上。实际应用中通常把客户端程序与服务器程序放置在不同的电脑上。

新建一个应用程序,在窗体上添加DCOMConnection1、ClientDataSet1、DataSource1、DBGrid1、DBNavigator1等组件。

设置DCOMConnection1的ComputerName属性为服务器所在的计算机名,这样程序可以在网络上寻找服务器,假如本服务器已在本机注册,则不设置ComputerName属性;设置它的ServerName属性为AppServer。rdstu;设置它的Connected属性为True,此时激活服务器程序。

设置ClientDataSet1的RemoteServer属性为DCOMConnection1;ProviderName属性为DataSetProvider1。这样ClientDataSet1就可以通过DCOMConnection1从DataSetProvider1组件读取数据了。

DataSource1的DataDet属性设置为ClientDataSet1。

DBGrid1和DBNavigator1的DataSource属性设置为DataSource1。

5结论

和两层C/S结构相比,三层C/S结构具有更灵活的硬件系统构成,对于各个层可以选择与其处理负荷和处理特性相适应的硬件。合理地分割三层结构并使其独立,可以使系统的结构变得简单清楚,提高了程序的可维护性。三层C/S结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言,有利于变更和维护应用技术规范。按层分割功能使各个程序的处理逻辑变得十分简单。在Delphi中主要通过DataSnap等技术来实现。随着基于Web的瘦客户机结构的发展,基于多层分布体系的应用将会越来越广泛

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值