☰
gsoap入门与使用
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
  • 至此就可开发基于gsoap的应用程序

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询