天天看點

使用gSoap實作企業級資料存儲應用

一、介紹

  SOAP實作遠端資料存儲比起DCOM以及Midas都要好,因為它可以使用80端口,并且在伺服器端無需多添加一個托盤圖示,部署也相當友善。

要在VC6下實作SOAP的用戶端,可以使用微軟提供的Soap SDK,或者是開源的gSoap(其實網上還有xSoap,eSoap等很多),如果采用微軟提供的Soap SDK的話,用戶端部署就稍微麻煩一些,需要注冊一堆的元件,如SOAP,XML等。

gSoap是一個誇平台的,用于開發Web Service服務端和用戶端的工具,使用C和C++語言編碼,當看到這個東東的時候,就不會再想用微軟的SDK了。

二、執行個體介紹

例子的伺服器端使用C#開發的ASP.NET Web Service,用戶端使用gSoap,例子的内容相當簡單,就是測試連接配接。

三、建立伺服器端

在VS2003裡面建立一個ASP.NET Web 服務MyWebService,建立函數如圖所示:

使用[WebMethod]來辨別對外輸出的函數名。點選運作會出現如下頁面:

四、建立用戶端

首先,點選服務說明,将WSDL使用檢視源代碼的方式存儲為MyService.wsdl檔案。

然後,使用開源的WsdlToCode工具,建立用戶端代碼:

選擇之前産生的wsdl檔案後,點選生成按鈕,産生的檔案如下圖:

第三,在VC6.0下建立基于對話框的工程TestClient,将MyServiceSoap.nsmap,soapC.cpp,soapClient.cpp,soapH.h,soapStub.h,以及gSoap工程根目錄下的stdsoap2.h,stdsoap2.cpp,總共七個檔案添加到工程,再添加代碼:

在對話框類中添加頭檔案包含。

#include "MyServiceSoap.nsmap"

代碼編寫如下圖:

修改soapC.cpp,soapClient.cpp,stdsoap2.cpp的編譯條件為不需要預編譯頭檔案,gSoap不需要MFC。

第四,運作結果:

  1. 伺服器端的函數必須要有入口參數,以及傳回參數;
  2. 伺服器端必須要安裝IIS以及FrontPage200伺服器擴充,由于有些機子使用的是DeepIn系統,可能安裝了IIS而沒有安裝FrontPage200伺服器擴充;
  3. gSoap是支援使用者名以及密碼登入的,上面的代碼是采用匿名登入,是以需要将Web Service設定為匿名登入;
  4. 入口參數以及傳回參數可以采用Xml與Base64編碼,這樣就支援所有的資料格式了,甚至是整個資料庫;
  5. 十行代碼之内就可以解決一個不小的問題還不多見,是以我強烈推薦使用gSoap;
  6. 本文涉及的所有代碼都在附件中,希望與大家多多交流;