【新东网技术大咖带您走进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为中心的数据。