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