基于FireDAC开发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客户端
(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.
浏览次数:  更新时间:2017-12-27 09:24:28
上一篇:镇江电脑培训 :电脑音乐技术
下一篇:最后一页
网友评论《基于FireDAC开发DataSnap三层数据库》
相关论文
Top