透視和調整你的企業和商務系統(Ⅲ:SOAP、WebService、Server) (ccBoy原創)
來源:互聯網
上載者:User
和調整你的企業和商務系統(Ⅲ:SOAP、WebService、Server)
小氣的神 2001-10-12
好了,終於可以開始使用Microsoft SOAP Toolkit將上面的建立的Bus_Authors轉換成一個WebService了,我使用的是Microsoft SOAP Toolkit 2.0 SP2,簡單的Version()的我就跳過了,不再廢話,MS的隨機協助有這方面的說明。因為我更感興趣ADODB.Recordset的問題,不過失望的是,使用WSDL Generator產生的WSDL不能支援ADODB.Recordset的類型
產生的WSDL檔案中,產生這樣的XML:
<message name='Authors.GetAuthors'>
</message>
<message name='Authors.GetAuthorsResponse'>
<part name='Result' type='xsd:???????'/>
</message>
根據隨機文檔特別是Handling Complex Types一節中的描述,我們需要使用一個Custom Type Mapper(CTM)來處理ADODB.Recordset的格式。先講一下下面需要做的步驟吧:
1. 產生一個自訂的類型轉換類處理ADODB.Reocrdset類型
2. 修改由WSDL Generator產生的WSDL檔案。
3. 設定IIS,配置好Authors的WebService
4. 產生用戶端測試這個WebService
先來產生ADODB.Recordset 的CTM,主要是實現SOAP Toolkit庫中的MSSOAPLib.ISoapTypeMapper介面,這一點上我認為是MS SOAP Toolkit 2.0 的一個重大提高,比起上一個SOAP Toolkit版本更組件化和便於使用,現在你用VB就可以完成這個CTM了,建立一個VB ActiveX DLL項目,拷入下面的代碼,(我產生的組件叫AdoTypeMapper.AdoRstTypeMapper)如果另外安裝了MS SOAP Toolkit 2.0裡面好像有一個這樣的ADODB.Recorset的例子。
Option Explicit
Implements MSSOAPLib.ISoapTypeMapper
Private Function ISoapTypeMapper_read( _
ByVal pNode As MSXML2.IXMLDOMNode, _
ByVal bstrEncoding As String, _
ByVal encodingMode As MSSOAPLib.enEncodingStyle, _
ByVal lFlags As Long) As Variant
Dim RecordSet As New ADODB.RecordSet