基于FireDAC开发DataSnap三层数据库应用

2017-12-23 00:56刘之烨雷聚超胡静宜
科技创新与应用 2017年36期
关键词:S结构

刘之烨 雷聚超 胡静宜

摘 要:服务器与数据库之间的连接直接影响了DataSnap三层数据库应用系统的传输效率。现阶段主流的连接技术为ADO与dbExpress。但是开发过程中存在着数据引擎兼容性不高、封装繁琐、连接逻辑复杂等问题。因此提出使用FireDAC数据引擎开发DataSnap三层C/S结构的数据库应用。文章根据在Delphi xe10平台的开发过程得出FireDAC数据引擎具有连接逻辑简单,数据库兼容性强等优点,更适合用于开发DataSnap三层数据库应用。

关键词:FireDAC; DataSnap技术;三层C/S结构

中图分类号:TP311 文献标志码:A 文章编号:2095-2945(2017)36-0120-02

引言

三层C/S结构较于传统的两层C/S结构具有更好稳定性、安全性、易维护性,同时也具有更快的响应速度等优点。因此在开发大型数据库应用系统的过程中,三层C/S结构的应用越来越普遍。

Delphi是一个功能强大,基于Windows环境,面向对象的可视化应用软件开发工具。它结合了传统的编程语言Object Pascal和数据库语言的强大功能,既可以用于传统算术编程又可以用于数据库编程。Delphi中的DataSnap技术体系,提供了客户端和应用服务器之间传递数据库信息的机制,同时丰富的组件库给程序的设计带来极大的便利。Delphi已经成为当前最流行的C/S开发工具之一。

开发DataSnap三层数据库应用的过程中,必须首先建立与数据库之连接,它是应用程序和后台数据库之间交换数据的前提。

1 FireDAC基本原理

FireDAC不使用IAppServer接口,而是把DataSnap服务器当作API来呼叫。客户端使用TFDConnection组件通过TCP/IP或HTTP/HTTPS协议连接使用FireDAC开发的DataSnap服务器,使用TFDStoredProc组件呼叫服务器API。

如果客户端呼叫的API需要回传数据,那么FireDAC会以Stream的格式传递数据,如果要对数据进行包含异动的工作,那么可以搭配使用FireDAC的中央快储功能来帮助程序员对数据进行异动。

在DataSnap架构中要使用FireDAC的中央快储功能,需要在应用服务器使用TFDSchemaAdapter组件。而在FireDAC客户端则需要使用TFDTableAdapter组件把客户端TFDMemTable罪案中的数据从应用服务器取回或是从客户端把异动的数据更新回应用层服务器。

因此要使用FireDAC开发DataSnap应用,需要下列步骤:

(1)开发使用FireDAC的DataSnap服务器,并使用FireDAC中央快储功能。

(2)开发使用FireDAC的客户端,使用TFDConnection连接服务器。

(3)使用TFDStoredProc组件呼叫服务器API。

(4)处理数据流(Stream Data)。

(5)使用TFDStoredProc组件呼叫服务器的API把异动数据回传给FireDAC的DataSnap服务器,再由FireDAC的中央快储功能把数据更新回数据库。

2 三层数据库应用的实现过程

2.1 创建数据库

(1)在Mysql中创建名为XATU的数据库,在数据库中创建TEST表,增加两列,列名分别为“xm”和“xh”并录入信息作为查询之用。

(2)将MySQL的动态链接库文件libmysql.dll存放到C:\WINDOWS\SYSTEM32目录下。

2.2 创建DataSnap服务器

(1)主菜单“File”->“New”->“Other”在“New Items”对话框中选择DataSnap Server,启动向导。“Project Type”选择“Forms Application”、 “Application Type”选择“VCL Application” 默认TCP/IP为通讯协议,测试端口211,选择TDataModule 作为服务器端API类别。完成后,生成三个工程文件ServerContainerUnit1.pas、Unit1.pas。ServerMethodsUnitsUnit1.pa

s存放網络服务相关的控件,Unit1.pas是服务器的主界面,ServerContainerUnit1.pas是我们需要进一步开发的工程文件。

(2)打开ServerMethodsUnitsUnit1.pas,加入TFDSchemaAd

apter、TFDQuery、TFDStanStorageJSONLink等组件。TFDStanStor

ageBinLink和TFDStanStorageJSONLink的作用是让FireDAC可以处理2进制(TCP/IP)和JSON(Http)格式的数据。

(3)进入Code单元,在Public下添加代码“function GET:TStream;”。添加的GET方法可以让客户端查询信息。FireDAC中要在客户端和应用服务器之间传递数据,只需要传递TStream形态的数据。GET()方法首先建立一个TMemoryStream对象,再开启FDQuery1组件取得数据,然后把FDQuery1组件中的数据对象通过TMemoryStream类中的SaveToStream方法拷贝到TMemoryStream对象中,最后把TMemoryStream对象回传给客户端。

(4)编译运行DataSnap服务器。

2.3 创建DataSnap客户端endprint

(1)主菜单“File”->“New”->“Muti-Device Application”,在窗体中添加TFDConnection、TFDGUIxWaitCursor、TFDPhysDSDriverLink等组件。

(2)在主界面的Button1的OnClick事件中呼叫GETXX()方法和SHOWXX()方法。GETXX方法获取数据,SHOWXX()方法展示数据。

GETXX()方法只需要呼叫FDStoredProc1的ExecProc()方法,FireDAC就可以呼叫DataSnap服务器中指定的服务方法(GET),呼叫成功后DataSnap服务器回传的数据回存储在FDStoredProc1的第一个参数中,型态是ftBlob。创建一个TStringStream对象把FDStoredProc1的第一个参数内容作为建构元参数,TStringStream对象的内容就是回传的结果,把TStringStream对象包含的数据流位置设定到起始位置,再通过FDMemTable1组件的LoadFromStream()方法从TStringStre

am对象中读取数据流并还原。

(3)编写代码并执行客户端,点击Button按钮,数据库中的信息已经通过应用层服务器传输到客户端,并展示在ListView组件中。

至此一个基于FireDAC的DataSnap三层数据库应用已经搭建完成,进一步的开发除了需要根据用户需求完善客户端界面外,还需要根据需求编写对应的应用层业务逻辑,完成相应的功能。

3 结束语

根据以上开发过程可以得出FireDAC有以下优点:

(1)跨数据库平台。FireDAC作为一个通用数据访问库,用于开发与企业数据库连接的多个设备的应用程序。通过其强大的通用架构,FireDAC可实现从Delphi到InterBase,SQLite的本机高速直接访问。

(2)访问快速。FireDAC数据集建立在强大的数据访问引擎之上。这种轻便,有效和灵活的引擎可以直接在应用程序中使用,并且是数据集API的强大基础。

(3)良好的兼容性。FireDAC可以使用TDataSet后代类,包括TFDQuery,TFDMemTable,TFDStoredProc和TFDTable。同時数据集类与原始BDE数据集和ClientDataSet高度兼容。

FireDAC技术和DataSnap技术相结合,为三层数据库应用的开发提供了良好的支持,为构建满足不同需求的多层C/S体系的数据库应用程序打下了良好基础。定会成为日后开发三层数据库应用的主流趋势。

参考文献:

[1]李文生.采用Delphi实现三层客户/服务器数据库应用程序[J].计算机工程,2000(7):170.

[2]张志强.基于DataSnap技术实现三层C/S体系的数据库应用[J].软件导刊,2011(10):167.

[3]杨长春.Delphi程序设计教程[M].北京:清华大学出版社,2016.endprint

猜你喜欢
S结构
基于Java的BBS开发
基于PHP的发印管理系统的实现
基于Java的网上商城开发
基于B/S结构的通信部队训练管理系统的设计研究
新型职业农民培育远程视频监管系统设计与实现
基于B/S技术网上选课管理系统的研究
B/S 结构软件的系统测试方法研究
基于ASP.NET 的图书管理系统
基于C/S结构的机务维修工程类综合实验教学平台建设与实践
基于网络的高校教材管理系统的研究