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

原创 2003年12月17日 23:54:00

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

使用CXF 开发SOAP webservice 服务端实例

目前
  • Leonardo9029
  • Leonardo9029
  • 2014年11月10日 19:24
  • 1479

基于Java的webservice创建与soap方式调用

一、创建(服务端) 建立普通类,代码: 浏览器键入http://localhost:8083/HelloWorld 二、调用(客户端) 1、利用SoapUI获取请求报文 创建S...
  • u013258447
  • u013258447
  • 2017年05月09日 11:17
  • 1755

java使用soap方式简单实现webservice (二)

上一篇从 xml 中找对应的参数比较麻烦,这里介绍用 SOAPUI 的方式填写参数 这里为实际调用 .net的 短信发送服务测试import java.net.URL; import javax...
  • nohero1
  • nohero1
  • 2015年10月13日 10:53
  • 10952

手把手教你做iOS的soap应用(webservice)

引自:http://www.cocoachina.com/bbs/read.php?tid=16561 用到的提供soap接口的网址是:http://www.Nanonull.com/TimeSer...
  • dyllove98
  • dyllove98
  • 2013年06月07日 21:36
  • 12612

(二)WebService之调用soap服务

引言 利用wsimport进行soap服务进行调用 1注意的地方 当解析本地的wsdl文件时需要修改生成的java文件内部的wsdl地址为在线的wsdl地址例如解析在线的天气预报服务 通过Ur...
  • LoveCarpenter
  • LoveCarpenter
  • 2016年12月30日 21:22
  • 5701

三种主流的WebService实现方案(REST/SOAP/XML-RPC)简述及比较

目前知道的三种主流的Web服务实现方案为: REST:表象化状态转变 (软件架构风格) SOAP:简单对象访问协议  XML-RPC:远程过程调用协议  简单介绍: REST...
  • zhushuai1221
  • zhushuai1221
  • 2016年07月27日 14:46
  • 3309

PHP利用SOAP进行webservice开发(客户端)

参考:http://blog.sina.com.cn/s/blog_777f9dbb01010fd1.html windows php.ini配置: extension = php_soap.dl...
  • bytxl
  • bytxl
  • 2013年07月10日 10:32
  • 1886

【soap】利用php的soap实现webservice

php有两个扩展可以实现web service,一个是NuSoap,一个是php 官方的soap扩展,由于soap是官方的,所以我们这里以soap来实现web service.由于默认是没有打开soa...
  • yanhui_wei
  • yanhui_wei
  • 2014年03月28日 18:21
  • 1511

跨域WebService请求 ——Nginx+SOAP服务+Ajax客户端

跨域WebService请求 ——Nginx+SOAP服务+Ajax客户端 sf2gis@163.com 2015年12月14日   1 目标:将WebService和客户端部署在不同的服务...
  • sf2gis2
  • sf2gis2
  • 2015年12月16日 20:18
  • 2051

C++语言实现的WebService开发库—gsoap应用实例

转载自:http://blog.csdn.net/guxch/article/details/8490763   四、应用实例 上节介绍了gSOAP的应用有两种,大部分介绍gSOAP的文章,都以第一种...
  • xtm_rongbing
  • xtm_rongbing
  • 2014年02月20日 19:41
  • 720
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DELPHI 6 抢先研究-- BizSnap/SOAP/WebService 之三 -- 用 SOAP 实现三层数据库应用
举报原因:
原因补充:

(最多只允许输入30个字)