`
tibaloga
  • 浏览: 870449 次
文章分类
社区版块
存档分类
最新评论

DELPHI 6 抢先研究-- BizSnap/SOAP/WebService 之三 -- 用 SOAP 实现三层数据库应用

 
阅读更多

DELPHI 6 抢先研究-- BizSnap/SOAP/WebService 之三

-- 用 SOAP 实现三层数据库应用

在前面的例子(见 《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 即可看到三个接口:

Port Type Namespace URI Documentation WSDL
IWSDLPublish urn:WSDLPub-IWSDLPublish WSDL for IWSDLPublish
IAppServer urn:Midas-IAppServer WSDL for IAppServer
ISoapDemo3DM urn:SvrDMSoap-ISoapDemo3DM WSDL for ISoapDemo3DM

这其中除了有 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

分享到:
评论

相关推荐

    091_《Delphi6实务经典》

    正因为如此,所以软件工程师可以轻松地使用Delphi撰写各式各样的应用程序,无论是文件管理、Client/Server或Multi-Tier数据库应用程序、因特网应用程序,甚或是企业间的跨平台的应用程序皆难不倒它。 面对 Delphi 6...

    Delphi 6 Developer's Guide

    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 ...

    Delphi for .NET Developer's Guide

    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...

    BCB6(BorlandC++Builder6.0编译器)

    Borland C++Builder 6为开发人员创建支持新兴Web服务的高效应用提供了一个稳固,高效率的电子商务开发环境.BizSnap Web服务开发平台能使开发人员轻松地创建业界标准SOAP/XML Web服务和连接,从而简化了企业到企业集成....

    C++Builder™ 6 Developer’s Guide

    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...

Global site tag (gtag.js) - Google Analytics