李維這次的內地之行(見《感受李維》一文)可以說在 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