基于DataSnap技术实现多层应用程序的体系分析

摘要: 该文介绍了DataSnap技术实现多层应用程序的体系结构及技术特点;并结合政府劳务经济信息管理系统,介绍DataSnap技术在CodeGear RAD Studio开发环境下的应用方法。

关键词: DataSnap;多层分布式;SocketConnection组件

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)35-7962-02

1 概述

随着计算机及信息技术的发展,大批量数据处理、分布式数据处理的应用越来越广泛;以往的C/S模式下的数据库应用程序已经不能适应信息处理的需求;以多层体系结构为基础的数据库应用程序很好地实现了集中化的商业逻辑及“瘦”客户机数据库应用程序,实现了分布式数据处理,满足了现代化信息处理的要求。一个多层体系结构的应用程序在逻辑上划分为几个部分,可分别在不同的电脑上运行,这些机器既可在一个局域网内,同时也可以在Internet上。目前多层体系结构主要以三层体系结构为主,下面就将讨论在三层体系结构下,在CodeGear RAD Studio中采用DataSnap技术的研究与具体应用。

2 DataSnap技术概述

DataSnap是Borland公司在MIDAS技术的基础上,开发的多层模式应用系统的分布式组件技术。她为我们提供了一套高级组件、服务和核心技术,可以实现跨平台、跨产品的多层分布式应用程序系统的开发。

1)数据层:通常称为数据库服务器,负责提供数据的存取和维护(如Oracle、Microsoft SQL Server或MySQL等)。

2)业务层:通常称为应用程序服务器,负责处理表示层与数据层之间的数据流,一方面从数据层获取适当格式的数据,为表示层提供公共的数据服务,另方面负责接受并处理表示层操作的商业逻辑。此层关键部件是远程数据模块,它提供了IAppServer接口。

3)表示层:也叫GUI层,通常称为客户应用程序,负责显示数据和与用户交互。表示层总是与业务层打交道。它从不直接与数据层打交道,而通过业务层提供的IAppServer接口获得数据和更新数据。

目前最常见的是三层的体系结构,其中,最关键的是应用程序服务器,它在三层体系结构中起了承上启下的作用。采用DataSnap技术构建的三层体系结构具有如下优势:

1)在一个共享的中间层封装了商业规则。不同的客户程序可以共享同一个中间层,而不必由每个客户程序单独实现商业规则。这样就避免了每个客户程序复制数据处理功能而产生的冗余。

2)客户程序可以做得很“瘦”。因为很多复杂的工作由应用程序服务器代劳了,客户程序只需要关注用户界面本身。这样客户端程序开发要变得容易得多,因为再也不需要安装、配置和维护数据库连接软件。

3)实现了分布式数据处理。把一个应用程序分布在几个机器上运行,可以提高应用程序的性能,通过冗余配置还可以保证不会因为局部故障导致整个应用程序崩溃。

4)提高了数据的安全性。可以把一些敏感的功能放在有严密防护措施的层上,然后通过授予不同的权限来保证对数据的访问控制,这样既保证了数据的安全性,同时又不至于使用户界面变得复杂。

3 DataSnap技术的应用实例

下面以重庆市奉节县人民政府开发的《劳务经济信息管理系统》为应用实例对DataSnap技术下多层应用程序开发进行详细地说明。

《劳务经济信息管理系统》用于区、(市)县一级人民政府的劳务经济管理部门对辖区内各级(镇、乡、街道、社区、居民委员会)城乡劳动力信息资源的采集、统计、汇总和日常管理。系统中的数据,通过各级镇、乡、街道工作人员录入,由系统自动上报汇总,构成本地劳务经济信息数据库,系统自动进行多种详尽的数据统计和形象化的图文分析,实时反映出本地区城乡劳动力资源结构、分布、培训、就业、失业、招用、以及劳务输出等详细情况,为政府发展劳务经济建设提供有力的决策依据。

《劳务经济信息管理系统》中所有数据信息放置在县信息中心的服务器中,县政府部门及下属各镇、乡部门通过党政专网与服务器联在一起。为了能安全高效地对全县近80万劳动力档案统一管理,我们采用了Microsoft SQL Server2005企业版作为数据库;考虑到系统联网的安全、可管理及支持互联网登录等要求,我们采用DataSnap技术来开发此信息管理系统。

采用DataSnap技术的多层Client/Server应用程序,首先要创建应用服务器,然后注册或安装应用服务器,最后是创建客户端程序。DataSnap技术实现多层应用程序的组件结构,如图2。

1)建立应用程序服务器

RDM是创建应用程序服务器的核心。要给一个新应用程序创建RDM,在CodeGear RAD Studio开发工具中选择File | New菜单命令,在对象库的Multitier页中双击Remote Data Module图标。在打开的对话框中设置一些RDM的初始化选项,如图3所示。

在我们所创建的远程数据模块中,需要添加连接到数据库的数据集组件(如Table、query等),还需要添加相应的DataSetProvider组件(生成IAppServer接口,便于客户程序调用),并将DataSetProvider组件的DataSet属性设置为相应的数据集组件名。再用代码实现数据集组件与数据库DBMS相连接,关键代码如下:

Adoconnect.ConnectionString:= Provider=SQLOLEDB.1;Persist Security Info=False;User ID=用户名;

Initial Catalog=DBMS数据库名称;Data Source=DBMS所在服务器名称

AdoConnect.Connected:=true; //连接数据库

2)注册应用程序服务器

应用程序服务器建立之后,需要被注册成COM,使连接的客户应用程序能够访问它。运行应用程序服务器,即可完成在注册表中进行注册。

3)建立客户应用程序

在CodeGear RAD Studio开发工具中选择File | New|Application菜单命令,生成客户应用程序项目。为了让客户程序与服务器程序通信,需添加SocketConnection组件和ClientDataSet组件到客户程序主窗体上。SocketConnection组件使用Windows套接字(Socket)管理和维护客户程序与服务器程序之间的链接。一旦通过SocketConnection组件将客户程序与服务器程序建立起链接,客户端的ClientDataSet组件将通过IAppServer接口使用TCP/IP协议与服务器进行通信。实现访问和操作与应用程序服务器相连接的DBMS中的数据、存储过程等。执行SQL语句及保存数据的主要代码如下:

procedure TForm1.ButtonQueryClick(Sender: TObject);//查询

begin

ClientDataSet1.Close;

ClientDataSet1.CommandText:="select * from 表";

ClientDataSet1.Open;

end;

procedure TForm1.ButtonSaveClick(Sender: TObject);//保存

begin

ClientDataSet1.Append;

ClientDataSet1.FieldByName("字段A").AsString:="值A";

ClientDataSet1.FieldByName("字段B").AsString:="值B";

if ClientDataSet1.ApplyUpdates(0)>0 then

application.MessageBox("保存失败,请重试.","提示",Mb_IconError)

else

application.MessageBox("保存成功.","提示",Mb_IconInformation);

end;

4 结束语

DataSnap编程技术有效的解决了客户端应用程序的负担,许多工作都可以交给应用程序服务器完成,实现了真正“瘦”客户机应用程序;并且能够通过客户端应用程序很容易的访问异地数据库,实现了不同数据库服务器之间交换信息的简单化、透明化,为构建网络化的信息管理系统提供了很好的解决方案。

参考文献:

[1] Steve Teixeira Xavier Pacheco.Delphi5开发人员指南[M].北京:机械工业出版社,2000.

[2] George Coulouris,Jean Dollimore,Tim Kindberg.分布式系统概念与设计(英文版)[M].3版.北京:机械工业出版社,2003.

[3] 张焰,陈志刚.三层Client/Server构架结合Datasnap技术的应用研究[J].电脑与信息技术,2004(6).

[4] 徐俊刚,邵佩英.分布式数据库系统及其应用[M].北京:科学出版社,2012.

[5] 王会娥,王新萍,薛婷婷. 面向对象中分层模块化设计的运用[J].软件,2011(3).

推荐访问:多层 应用程序 体系 分析 技术