服务器端程序实际上是个COM 工程,它本身连接数据源,再通过接口与客户端联系,这个COM 工程必须注册在服务器上。 首先建立一个空白的工程,在工程里放置一个Adoconnection组件。然后再建一个远程数据模块file -> New -> Other -> Multitier -> Remote Data Module(远程数据模块)。 Coclass Name : libserver ,Instancing :执行模式,大部分用Multiple Instance(多重实例),Threading Model:线程模式,建议用Apartment(单元),产生一个窗口,在这个窗口里,可以放入数据控件。 在Viwe -> Type Libray 中,我们可以看到这个COM 的一些特性。我们也可以记下系统提供的GUID,以备后来使用。加入一个ADOTable,并设置其指向一个数据库。再设置一个DataSetProvider(在DataAccess页)指向ADOTable,这就完成了服务器端的程序设计。 保存,编译,注册(注意,只要运行就自动在本机注册了)。
4.3 客户端程序的建立
在Two-Tier模式中,客户端(Client)程序是直接和服务器的数据源相连的,而Multi-Tier模式,多个客户端连接的是一个应用程序服务器,因为收费是按客户端数计算的,所以,数据库的使用费用比较低。 1)建立一个普通的工程。 2)放置一个TDCOMConnrction控件(在Datasnap页),属性:在本机注册时,可直接设置以下属性:ServerName:应用程序服务器注册名(server.libserver) ,Connected=true。这时你可以看到服务器端的COM 程序被激活了。如果在网络上调试,需要给出服务器名:ComputerName:服务器名(自动给出网上邻居)注意: ServerGUID的GUID值是自动给出的。 3)放置一个TClientDataSet控件(在Data Access页),属性RemoteServer= DCOMConnrction1,ProviderName:=DataSetProvider1(服务器端将被激活),Active=true (激活后将能正常连接) 4)放置TDataSource,属性:Dataset:指向cdsCustomer。 这样一个客户端程序就建立好了,其余犹如普通的数据库设计。 4.4 客户端实现SQL 查询
由于在客户端不存在TQuery控件,似乎客户服务器模式是无法做SQL查询的。但是,Delphi很好的解决了这个问题。事实上,只要客户端连接上服务端应用程序,客户端的TClientDataSet就包含了一个名字为Provider的属性,对应到服务器端DataSetProvider的所有默认属性和方法,其中DataSetProvider有一个Options属性,只要让其中的poAllowCommandText=true, 那么,DataSetProvider的poAllowCommandText就可以接受前台来的SQL 命令,并传送给TQuery。 可以看出,真正传递数据的是DataSetProvider的接口,所以,用这个接口搭建传递SQL 的桥梁是必需的。客户端进行SQL 查询的方法是: ClientDataSet.Close; ClientDataSet.CommandText := 'SQL语句'; ClientDataSet.Open; 4.5 动态连接应用程序服务器的实现 客户端程序在运行时,需要连接应用服务器程序以取得服务。但是,在系统实际应用的时候,运行应用服务器程序的计算机是经常改变的,因此在客户端程序启动时,应该先找到运行应用服务器程序的计算机的设置。动态连接应用服务器的流程类似于12.3节的动态数据库连接,动态连接应用服务器程序的流程图14-1所示。 掌握了动态连接应用服务器的流程,就可以具体实现它。下面就将分步骤介绍动态连接应用服务器的实现过程。 在Delphi中新建一个窗体,将单元文件保存为connect.pas窗体的Name属性设为fm_serconfig,Caption属性设为”服务器配置”,运行后窗体如下图所示。 (2) 在“连接设置”窗体中,需要输入应用服务器主机名(
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 2/8/8