李维这次的内地之行(见《感受李维》一文)可以说在 Borland 的用户掀起了一场风暴,在几个比较大的程序员论坛上,这是这几最热门的话题之一,我在 CSDN 上发了一贴关于他上海之行的文字,结果成为我发过的有史以来反响最强的一个贴子。
在这次 Borland 举办的 WebService 技术研讨会上,李维做了几个 Demo 来演示 Borland 的 WebService 解决方案,这是几个非常好的 Demo ,它们以一种很简单的方式,较为全面地展示了用 Borland 的几个主要产品进行 SOAP/WebService 开发的实现,但是我认为其中还是有地方可以改进。
李维也是用打了 Update 2# 的 Delphi 6,这个版本的 Delphi 6 在 SOAP/WebService 应用开发方面有比较大的改进(见《DELPHI 6.02 抢先研究 -- BizSnap/SOAP/WebService 之四》一文),其中最大的改进之一便是 WSDL Import Wizard 。新的 WSDL Import Wizard 主要改进在:
增加了一个导入结果查看界面,可以以树形显示导入的 WSDL 中所含的接口内容,并且可以预览生成的接口单元;
生成的接口单元包含了 HTTP 远程接口对象生成;
支持新的 SOAP 标准,可以导入 Visual Studio.net 生成的 WSDL。
而上述几点中的第二点就是李维可以改进的一点。在《DELPHI 6 抢先研究 -- BizSnap/SOAP/WebService 之一》一文的例子中所采用的方法就是李维的 Demo 中所用的方法,即放上一个 HTTPRIO 控件,设置好 URL 属性,再用如下的代码来访问远程接口:
Var
p : ISoapHello;
begin
p := HTTPRIO1 As ISoapHello;
Label1.Caption := p.GetHello( StrToInt( Edit1.Text ) );
end;
但是因为前面所说的 WSDL Import Wizard 的第二点改进,所以已经可以不用这么麻烦了,不需要再放 HTTPRIO 控件,而且代码也简单得只要一句:
Label1.Caption := GetISoapHello.GetHello( StrToInt( Edit1.Text ) );
其中的 GetISoapHello 是一个函数,返回一个实现 ISoapHello 远程接口的对象,在导入 WSDL 时生成的接口单元文件里定义并实现的,它的功能就是新建一个 HTTPRIO 对象,并根据 WSDL 设置好所有的属性。
[Mental Studio]猛禽 Apr.13-02