在前面的例子(见 《DELPHI 6 抢先研究 -- BizSnap/SOAP/WebService 之一 -- 一个 Hello world! 的例子》 和《DELPHI 6 抢先研究-- BizSnap/SOAP/WebService 之二 -- 通过 SOAP 传递自定义类型数据》 )中我们看到了 SOAP 的强大功能,特别是第二个例子。如上一个例子所示,我们只要利用 Midas/DataSnap 的 Provide/Resovle 架构,将 Data/Delta 包做成自定义类型,在 Web services 与客户端之间传递,便可以通过 SOAP 实现三层数据库应用。这固然是一个方法,但未免麻烦一些,其实 Delphi 6 早已为我们准备好了,而且她做得更好,她将 IAppServer 接口进行 SOAP 封装,使得我们可以用和 Midas/DataSnap 一样的方式来开发基于 SOAP 的多层数据库应用。 当然还是以一个例子来说明:
服务端: 1.New|WebServices|Soap Server Application ,如下图:
这次我们用 Web App Debugger (详见《DELPHI 6 抢先研究 -- Web 应用开发及调试》),设置其 CoClass Name 为 wadSoapDemo3 , 如下图:
2.SaveAll , Unit2 命名为: SvrWMMain , Unit1 不改名, Project1 命名为: Demo3 ; 3.New|WebServices|Soap Server Data Module ,如下图:
在弹出的对话框中输入 Class Name 为 SoapDemo3DM ,如下图:
确定后将此单元保存为 SvrDMSoap ; 4.在 SoapDemo3DM 中放入三个控件: SQLConnection1, SQLDataSet1, DataSetProvider1 ,如下图:
其属性设置为:
SQLConnection1 |
ConnectionName := IBLocal; LoginPrompt := false; Params.Values['Database'] := '[...]/Examples/Database/Employee.gdb'; // 上面的 [...] 为你的 InterBase 安装路径 |
SQLDataSet1 |
SQLConnection := SQLConnection1; CommandText := 'select EMP_NO, FULL_NAME, PHONE_EXT from EMPLOYEE'; |
DataSetProvider1 |
DataSet := SQLDataSet1; |
5.服务端就这样完成了,不用写一行代码,编译并运行,然后退出即完成 Web App Debugger 应用的注册。 启动 Web App Debugger ,再启动浏览器,在地址栏输入: http://localhost:1024/Demo3.wadSoapDemo3/wsdl 即可看到三个接口:
这其中除了有 DataModule 的接口 ISoapDemo3DM 以外,最重要的是多了一个 IAppServer 接口,只要有这个接口,就有 Midas/DataSnap 。
接下来做客户端: 1.New|Application 新建一个一般 VCL 应用程序; 2.SaveAll , Unit1 命名为 ClnMain , Project1 命名为 Client ; 3.在 Form1 上放上 SoapConnection1(在 WebService 页中的最后一个), ClientDataSet1, DataSource1, DBNavigator1, Button1, DBGrid1 等控件,如下图:
设置各自的属性如下表,如果设置正确的话,应该如上图那样在 DBGrid1 中显示出数据来:
SoapConnection1 |
URL := 'http://localhost:1024/demo3.wadsoapdemo3/soap'; |
ClientDataSet1 |
RemoteServer := SoapConnection1; ProviderName := 'DataSetProvider1'; Active := true; |
DataSource1 |
DataSet := ClientDataSet1; |
DBNavigator1 |
DataSource := DataSource1; |
DBGrid1 |
DataSource := DataSource1; |
Button1 |
Caption := 'Apply'; |
4.双击 Button1 输入下面的程序:
procedure TForm2.Button1Click(Sender: TObject);
begin
ClientDataSet1.ApplyUpdates( -1 );
end;
5.至此,客户端程序也完成了,编译并运行(确定 Web App Debugger 已运行),可以看到服务端运行一会儿,它的窗体闪现几秒钟后客户端程序即可取得数据并显示出来。现在可以通过 DBNavigate/DBGrid 对数据进行操作,操作完成后按 Apply 按钮即可将数据修改提交到服务端,此操作会运行服务端程序。
就这样,我们只写了一行程序就完成了一个基于 SOAP 的多层数据库应用。
http://msrc.126.com 猛禽 Oct.20-01
|
相关推荐
正因为如此,所以软件工程师可以轻松地使用Delphi撰写各式各样的应用程序,无论是文件管理、Client/Server或Multi-Tier数据库应用程序、因特网应用程序,甚或是企业间的跨平台的应用程序皆难不倒它。 面对 Delphi 6...
Borland(r) Delphi 6 Developer's Guide is completely updated for Delphi 6 and includes in-depth coverage on Borland's new CLX architecture, DBExpress Applications, SOAP, CORBA, WebSnap and BizSnap ...
This newest edition is completely updated for Delphi using the .NET Framework and includes in-depth coverage on Borland's new CLX architecture, DBExpress Applications, SOAP, CORBA, WebSnap and BizSnap...
Borland C++Builder 6为开发人员创建支持新兴Web服务的高效应用提供了一个稳固,高效率的电子商务开发环境.BizSnap Web服务开发平台能使开发人员轻松地创建业界标准SOAP/XML Web服务和连接,从而简化了企业到企业集成....
To my knowledge, this is the only C++ implementation that enables you to build C++ applications on the fly, just as easy as with Delphi or Visual Basic. For programmers who are apprehensive of C++, I...