2026/10/16 5:33:07
网站建设
项目流程
1.gsoap
- soap为简单对象访问协议
- webserver的一种具体实现
- 在分布式系统里应用较多
- 想开发soap协议的应用程序,除了自己从头编码实现外,还可以利用gsoap开源软件包
- gsoap工具与开发包,使用广泛
- gsoap提供商业版本,也提供开源版本
- 一般利用开源版本进行soap协议的应用开发
- 不必关心soap如何实现
- 只需关注soap之上的业务逻辑
- gsoap 最初由Robert A. van Engelen开发,所属genivia.inc
- gsoap 商业版本、开源版,均来自genivia.inc
2.安装gsoap工具ubuntu 20.04
- 安装成功后获取二进制执行文件(gsoap工具):
- wsdl2h : 将wdsl文件转化为c/c++的头文件
- soapcpp2 : 根据上述c/c++头文件,生成soap的相关代码
- 仅限于提供gsoap的工具,要编译基于gsoap的应用程序需要安装开发包
- 执行如下命令完成安装
sudoaptinstallgsoap
3.编译安装gsoap开发包ubuntu 20.04
- 从sourceforge下载 gsoap.zip
- 执行下面命令,编译安装gsoap开发包与gsoap工具
#安装依赖包sudoapt-getinstallflex bison#安装编译wsdl2h的基础工具sudoapt-getinstalllibssl-dev#安装ssl开发包,以便支持https/ssl# 编译安装gsoap到默认目录# /usr/local/bin 目录wsdl2h soapcpp2 2个工具# /usr/local/lib 目录为c/c++的soap.a/soapssl.a/soapck.a 3种库./configuremakesudomakeinstall
4.gsoap工具的使用与生成文件说明生成c代码
- 自定义的文件,一切的开始:
proto.wsdl - 利用wsdl2h,由
proto.wsdl生成代码头文件proto.h- 不同的proto.wsdl文件,生成的proto.h也不同
- 选项c,生成c代码
- 选项t,指定typemap.dat文件,一般用于修改接口的默认前缀名ns/ns2为自定义名称
- 选项s,不使用C++标准库
wsdl2h-c-tdependencies/typemap.dat-s-oproto.h proto.wsdl
- 利用soapcpp2,由代码头文件
proto.h生成soap的实现代码- 不同的proto.wsdl文件,生成的下面代码也不同
proto.h至此,可删除,不参与后续应用程序的编译soapClient.c客户端stub代码:rpc调用,收发请求-响应客户端独有soapServer.c服务端的区分不同RPC请求的代码服务端独有soapC.c基础代码api:完成rpc的xml消息构造/提取、序列化/反序列共用soapC.h提供基础代码api的头文件共用soapStub.h提供proto.h的清理后的头文件,数据结构-rpc的接口声明等共用
- gsoap开发包提供的代码
编译需要stdsoap2.csoapC.c需要依赖的更底层函数- 可以研究其底层如何xml构造/提取、序列化/反序列化的实现
- 可拷贝到编译的目录,或指定此文件的路径
- soapcpp2工具
- 选项c,生成c代码
- 选项C,仅生成客户端代码
- 选项S,仅生成服务端代码
- 选项r,生成readme文件
- 选项x,不生成xml文件(报文描述文件)
- 选项L,不生产lib库文件
- 选项d,指定生成文件的目录:生成的文件全部移入该目录
soapcpp2-c-r-L-doutput proto.h
- 在上述基础上,自行编写客户端、服务端的业务代码即可
- protoclient.c
自行编码实现的业务 - protoserver.c
自行编码实现的业务
- 编译
cc-oproto protoclient.c stdsoap2.c soapC.c soapClient.c
5.示例代码
- 可在官网获取示例代码,calc
- 可在gsoap开发包里学习自带的示例代码,比如gsoap/sample/calc目录
6.参考文档
- gsoap官网
- gSoap百度百科
- gsoap入门资料
- gsoap工具集的入门使用
- gsoap工具编译安装-生成示例代码总结
- XML-RPC/JSON and jsoncpp
7.推荐gsoap论文最初源码作者engelen参与
- 尚未来得及阅读与学习
- The gSOAP Toolkit for Web Services and Peer-To-Peer Computing Networks
- Pushing the SOAP Envelope with Web Services for Scientific Computing
- Code Generation Techniques for Developing Web Services for Embedded Devices
- Constructing Finite State Automata for High Performance XML Web Services
- Benchmark Suite for SOAP-based Communication in Grid Web Services
- Toward Remote Object Coherence with Compiled Object Serialization for Distributed Computing with XML Web Services
- A Table-Driven XML Streaming Methodology for High-Performance Web Services
- Exploring Remote Object Coherence in XML Web Services
- The GSI plug-in for gSOAP: building cross-grid interoperable secure grid services