您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 招标投标 > Delphi-XE7开发入门教程之DataSnap三层架构篇-第一部分预览
DelphiXE7开发入门教程之DataSnap三层架构篇多种客户端(Win32/64、MacOSX、iOSandAndroid)访问企业数据库(SQLServer、Oracle、MySQL等)本实例以开源的MySQLServer为企业数据库,讲解DataSnap的基础应用场景之一,也就是三大模型(DataSnapServer、DataSnapREST/JSONApplication、DataSnapWebBrokerApplication)的第一类:基础DataSnap服务应用。开发平台采用当前最新发布的DelphiXE7。此实例仅仅讲解从企业数据库服务器进行不同条件的数据记录查询的功能,读者理解其原理后几乎可以不费力气的做到对企业数据库日常的增删查改等工作以满足更复杂的需求。这也正是此篇文章的用意所在,Embarcadero的官方文档中仅仅给出了显示企业数据库中的一张表记录的方法,而没给出进一步的指导,这在实际应用中几乎是毫无价值的。另外,如何使DataSnap中间服务应用作为一个WindowsService在后台运行,也可以从此篇文章中得到相关细节。掌握了MySQL的数据库通讯,相应的MicrosoftSQLServer或Oracle也只是驱动的不同而已。一、数据库服务器端部署(对MySQL熟悉的读者可以忽略此节)1.MySQLServeronLinuxRedhat或CentOS发行光盘会带有MySQLServer的安装包,例如下面的查询结果表示MySQL服务器及客户端都安装正常了:[root@iscsi-sz~]#rpm-qa|grepmysql-5.1mysql-5.1.73-3.el6_5.x86_64[root@iscsi-sz~]#rpm-qa|grepmysql-servermysql-server-5.1.73-3.el6_5.x86_64[root@iscsi-sz~]#如果系统没有安装MySQLServer可参考此文:下可以安装完整的后台服务型版本,也可以采用绿色版的MySQLServer。(1)这里提供一个范例版本详细的安装图解:(2)以及如何实现绿色版MySQLServeronWindows:上述文章也介绍了最基本的MySQL操作指令。(3)如果你实在是比我想象的更懒,那就这个吧:这个版本嘛,估计用的人最少了,但如果你是果粉,那我还是为你贴上吧:二、DataSnap中间层服务器开发准备工作设置DelphiXE7的MySQL驱动,这里我们以DBExpress为例,对于FireDAC的驱动方法是完全一样的。(1)不要使用过高版本的libmysql.dll驱动,安装好MySQLServer后,在安装目录下你会找到这个文件,将它拷贝到DelphiXE7的bin64文件夹下,注意一定不要拷贝到bin文件夹。默认路径为:C:\ProgramFiles(x86)\Embarcadero\Studio\15.0\bin64(2)在MySQL服务器里创建数据库并导入数据mysql-uroot-pcreatedatabasedelphi_test;exitmysql–u–pdelphi_testsample.sql上面截图来自Linux系统,如果是Windows,则在DOS下进入MySQL安装路径下的bin目录,运行同样的命令即可。(3)设置MySQL访问权限,这里我假设你的DelphiXE7和MySQL在同一电脑上,这样会少一些工作。如果不是,那么请自行解决远程访问权限问题。(4)为DelphiXE7配置数据库驱动,先运行DelphiXE7,并点选DataExplorer面板,展开MySQL分支:右键点击MySQLConnection,然后Modify:假定我们的测试数据库为delphi_test:填写好参数之后点击TestConnection看看一切是否正常:(5)如果要配置其它类型的数据库驱动,过程是类似的,比如采取FireDAC的话则应该展开DataExplorer下的FireDAC,然后选择数据库服务器类型,配置和DBExpress并无本质差异:三、多设备客户端开发DataSnapVCLFormServerApplication,也就是窗体式中间层服务程序DefineaDataSetontheDataSnapServer1.创建一个新的Delphi项目,FileNewOther并选择DataSnapServer分支下的DataSnapServer项目类型:oForDelphi:DelphiProjectsDataSnapServerDataSnapServer2.NewDataSnapServer向导出现:选择FormsApplication作为项目类型,接下来是VCLApplication作为程序类型,第三步选择网络协议,我们这里采用默认的TCP211端口。最后一步则为服务方法选择TDSServerModule作为继承类型。3.点击SaveAll按钮保存项目所有文件,将默认产生的Unit1单元保存为DataSnapServerUnit.4.将默认产生的服务方法单元ServerMethodsUnit1保存为ServerModuleUnit.5.将默认产生的服务容器单元ServerContainerUnit1保存为ServerContainerUnit.6.将默认产生的项目文件Project1保存为DataSnapServerProject.7.切换至DataSnapServerUnit单元,将Form的Name属性改为DSServerForm.8.在ProjectManager这里选择ProjectGroup1将其保存为DataSnapTutorialProjectGroup.groupproj.DefineaDataSetontheDataSnapServer1.切换至ServerContainerUnit单元的代码窗口,在implementation处更正代码为:usesWinapi.Windows,ServerModuleUnit;2.切换至ServerModuleUnit单元的设计窗口,将ServerModule的Name属性改为DSServerModule_MyTest3.为ServerModule添加以下控件并做好相应设置:o放置一个TSQLConnection控件并设置属性如下:将Name设置为SQLConnection_MyTest将LoginPrompt设置为False将ConnectionName*设置为MySQLConnection注意:请确保MySQLServer在此之前已经运行正常。将Connected设置为Trueo放置一个TSQLDataSet控件并设置属性如下:将Name设置为SQLDataSet_MyTest将SQLConnection设置为SQLConnection_MyTest将CommandType设置为ctQuery将CommandText设置为一句SQL指令,例如:selectUserNamefromuserlistwithemailwhereEnabled=1orderbyUserID将Active设置为Trueo放置一个TDataSetProvider控件并设置属性如下:将Name设置为DataSetProvider_MyTest将DataSet设置为SQLDataSet_MyTestExposetheDataSetfromtheDataSnapServer我们已经创建了一个新的ServerModule包含了一个DataSet和一个DataSetProvider。接下来我们将这个ServerModule提供给DataSnap客户端。1.打开ServerContainerUnit单元的窗体设计器,选中DSServerClass12.更新其OnGetClass事件的代码如下:procedureTServerContainer1.DSServerClass1GetClass(DSServerClass:TDSServerClass;varPersistentClass:TPersistentClass);beginPersistentClass:=TDSServerModule_MyTest;end;RuntheDataSnapServer现在试着运行一下你的程序吧,注意Windows给出的防火墙警告,请允许程序访问网络即可。OK,服务正常跑起来了,不过看起来它只是一个空空的窗体似乎啥也没有。其实中间层服务它已经完成了。可是这样的中间层服务器只能静态的将SQL语句产生的数据结果提供给客户端,完全不具备灵活性。让我们进入重点吧,修正一下ServerModuleUnit单元的代码:1.找到以下定义:把两个没有用的function删除,添加一个新的function如下:2.找到以下的方法实现:将这两个方法删除,新增一个方法的实现代码如下:保存项目并再次编译、运行。现在你的DataSnap中间服务器将能为客户端提供灵活的功能了。这是因为客户端能够调用这个服务方法,并通过远程呼叫过程传递参数(也就是SQL指令)让DataSnap服务端来和企业数据库MySQL通讯并执行SQL指令。服务端将SQLDataSet刷新一次,这样数据集就更新了,客户端将能获取到SQL指令执行之后的数据集。==========================================未完待续================================================DataSnapVCLWin32ServiceApplication,也就是Windows标准服务类应用程序此部分暂时略,稍晚待完整版写出细节。四、多设备客户端开发1.Windows32/64bits2.MacOSX3.Android4.iOS5.如何减少界面设计工作量,而同时保证最大的设备兼容性
本文标题:Delphi-XE7开发入门教程之DataSnap三层架构篇-第一部分预览
链接地址:https://www.777doc.com/doc-4373703 .html