C++
C++ Builder 6 BizSnap/SOAP/WebService(3)
-- ⽤SOAP 实现三层数据库应⽤本⽂将使⽤SOAP 和DataSnap 做⼀个基于WebService 的多层应⽤的例⼦,实现通过SOAP 实现三层数据访问。本例⼦的功能是在服务端通过dbExpress 的数据访问控件取得数据表内容,然后将其通过SOAP 传递到客户端再显⽰,客户端也可以修改数据并更新到服务端。
服务端:
1.New|WebServices|Soap Server Application ,如下图:
选Web App Debugger executeable 类型,CoClass Name 为:wadSoapDemo3 ,如下图:
确定后将⾃动提⽰是否要新建⼀个接⼝,如下图,因为本例⼦不需要⾃定义接⼝,所以选择取消:
2.新建 SOAP Server Data Module ,其向导如下图,输⼊模块名:
SDMDemo3 即可⽣成⼀个 SOAP 数据模块,提供了⼀个名为 IAppServerSOAP 的 WebService 接⼝:
3.在⽣成后的 SoapDataModule 中放⼊
四个数据库控件: SQLConnection1, SQLDataSet1, DataSetProvider1 ,其各属性设置如下表:
SQLCon
nection
1
ConnectionName = IBLocal;
LoginPrompt = false; Params->Values["Database"] =
"[...]\\Examples\\Database\\Employee.gdb"; // 上⾯的 [...] 为你的 InterBase 安装路径 SQLDat
aSet1
SQLConnection = SQLConnection1; CommandText = "select FULL_NAME, PHONE_EXT from EMPLOYEE"; DataSet Provider
1
DataSet = SQLDataSet1; 完成后的 WebModule 如下图: 4.SaveAll , Unit3 命名为:
Demo3SDM , Unit2 命名为: MainWM , Unit1 不改名, Project1 命名为: Demo3 ;
5.编译之即可产⽣: ,⾄此,不⽤写⼀⾏代码即完成服务端的编写;
先运⾏⼀次 ,完成注册的⼯作后启动Web App Debugger 。打开浏览器,输⼊URL 为:
localhost:1024/Demo3.wadSoapDemo3 即可看到⼀个标准的SOAP 应⽤说明页⾯,在其中可以看到导出了三个与DataSnap 有关的接⼝:
1、IAppServer :DataSnap 的基本接⼝,在SOAP 应⽤中并没有使⽤,估计是为与Delphi 6 未打Patch 2# 开发的程序兼容⽽保留的;
2、IAppServerSOAP :SOAP 多层应⽤的基本接⼝,是MIDAS 中的IAppServer 的SOAP 版;
3、ISDMDemo3 :SOAP Server Data Module 的接⼝。
客户端程序:
1.New|Application 新建⼀个⼀般VCL 应⽤程序;
2.SaveAll ,Unit1 命名为Main ,Project1 命名为Client ;
3.在Form 上放上⼀个SoapConnection, ClientDataSet, DataSource, DBGrid, DBNavigator, Button 等⼏个控件,其各属性设置如下表:
SoapCo
nnectio
n1
如何生成webservice客户端URL = "localhost:1024/Demo3.wadSoapDemo3/soap";
ClientD ataSet1
RemoteServer = SoapConnection1; Provider = "DataSetProvider1";
Active = true;
DataSo
urce1
DataSet = ClientDataSet1;
DBGrid1 DataSource = DataSource1;
DBNavi
gator
DataSource = DataSource1;
Button1 Caption = "Apply";
正常情况下,设置ClientDataSet 的Provider 属性时,点击下拉按钮将使⽤服务端运⾏,并列出所有Provider (本例只有⼀个)。设置好ClientDataSet 的Active 属性后将显⽰数据如下图:
4.双击Button1 输⼊下⾯的程序:
void __fastcall TForm2::Button1Click(TObject *Sender)
{
ClientDataSet1->ApplyUpdates( 0 );
}
5.⾄此,客户端程序也完成了,编译并运⾏(确定Web App Debugger 已运⾏),可以看到服务端运⾏⼀会⼉,它的窗体闪现⼏秒钟后客户端程序即可取得数据并显⽰出来。现在可以通过DBNavigate/DBGrid 对数据进⾏操作,操作完成后按Apply 按钮即可将数据修改提交到服务端,此操作会运⾏服务端程序。
就这样,我们只写了⼀⾏程序就完成了⼀个基于SOAP 的多层数据库应⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。