【新東網技術大咖帶您走進gSOAP】一個強大的開源工具
發布時間: 2016-11-11 11:51:49
文/楊宗峰 電商支撐部
新東網自2001年成立以來,掌握大數據、云計算、通信、物聯網及區塊鏈等信息技術,擁有一支逾16年經驗的強大IT團隊。為沉淀企業技術實力,繼續發揮行業優勢,《東網快訊》特邀新東網技術大咖帶您走進這些先進信息技術,揭秘新東網16年來的技術成果,每周五發布。
簡單地說,gSOAP是一個跨平臺的,能在Windows、Linux、MAC OS和UNIX下使用C和C++語言編碼,用于開發Web Service服務端和客戶端的工具。
更具體地說,gSOAP提供了一個SOAP/XML 關于C/C++ 語言的實現,從而讓C/C++語言開發webservice服務或客戶端程序的工作變得輕松了很多。
絕大多數的C++ webservice服務工具包提供一組API函數類庫來處理特定的SOAP數據結構,這樣就使得用戶必須改變程序結構來適應相關的類庫。與之相反,gSOAP利用編譯器技術提供了一組透明化的SOAP API,并將與開發無關的SOAP實現細節相關的內容對用戶隱藏起來。
gsoap自2001年以來經過10幾年的發展,已經非常成熟,許多工業項目和產品都在使用該工具。由于他的源代碼為開源,并且在行業標準協議、傳輸協議、跨平臺、安全及多線程、處理速度快、占用內存小等優勢下,受到了廣泛開發愛好者的青睞。
對于新東網來說,有兩個省份運營商電信某某系統應用了gsoap工具。
具體應用場景為該系統平臺中銀聯繳費的前置機服務。
前置機服務的代碼為標準C語言實現,為了讓前置服務提供給web前端系統調用,C語言的服務就可以通過gsoap工具輕松發布成標準規范的webservice協議,達到跨平臺的目的,同時也免除了接入系統開發語言的限制。正因為如此,web前端不受語言的限制,不管是行業上常用的php或是.net或是java,都能輕松通過gsoap調用C語言的服務。
下面介紹一下如何使用gsoap工具:
1) 解壓工具包并配置環境變量
將gsoap_2.7.12.tar.gz解壓到本地目錄,這邊需要注意,盡量不要放于帶空格或是帶中文名字的目錄,國外的軟件對中文支持欠缺些。
將D:\gsoap-2.7\gsoap\bin路徑添加到系統的path中。
2) 根據wsdl描述文件生成客戶端代碼
根據web前端和前置機服務預先定義好的協議WSDL描述文件,即前端調用api規范文檔,生成C/C++客戶端代碼文件。如下圖中”bank”開頭的文件。包含.h和.cpp文件。步驟如下:
a. 先執行以下命令,生成頭文件:
b、在執行以下命令,解析bank.h文件,生成存根程序
最后出來的文件如下:
3) 將上述文件拷貝放入前置機工程中
4) 前置機工程中創建ServiceInterface.cpp類同時導入第三步生成的文件。
#include "BankPackage.h"
#include "bankHIBankBayServiceHttpBindingService.h"
#include "bankH.h"
extern CSockDeal gBankSockDeal;
5) 根據銀聯的ISO8583協議,編寫業務邏輯代碼,下面以簽到為例進行說明:
如上述,方法IFA_USCOREPaymentBankReqAndResp后所帶的參數有兩個對象,這兩個重要的對象都是gsoap工具的功勞,即由gsoap封裝在bank.h頭文件中。
參數:ns1__IFA_USCOREPaymentBankReqAndResp則是接收web端的請求對象,根據該對象可以獲取web端上送上來的所有入參信息。前置服務根據這些入參信息處理后進行打包并發送給銀聯。
參數:ns1__IFA_USCOREPaymentBankReqAndRespResponse則是響應給web端的返回對象,當在前置機服務內,調用銀聯前置機后,可以將銀聯的返回信息處理后通過該對象返回給web前端。最后,web端將結果展示給用戶。
gSOAP是一種跨平臺的C和 C++軟件開發工具包。生成C/C++的RPC代碼,XML數據綁定,對SOAP Web服務和其他應用形成高效的具體架構解析器,它們都受益于一個XML接口。 這個工具包提供了一個全面和透明的XML數據綁定解決方案,Autocoding節省大量開發時間來執行SOAP/XML Web服務中的C/C++。此外,使用XML數據綁定大大簡化了XML自動映射。應用開發人員不再需要調整應用程序邏輯的具體庫和XML為中心的數據。