gSOAP的使用

功能: 编译wsdl文件生成C/C++代码的soap接口和xml文件 
工具 :wsdl2h.exe   soapcpp2.exe 
1.wsdl2h.exe:根据WSDL生成描述服务操作定义及数据类型定义的头文件; 

2.soapcpp2.exe:根据头文件自动生成调用远程SOAP服务的客户端代码(称为存根:Stub)和提供SOAP服务的框架代码(称为框架:Skeleton)、XML序列化的例程、甚至包含从头文件生成的WSDL文件。

核心:gSOAP引擎 
1.gSOAP引擎可以被构建成libgsoap.a和libgsoap++.a库,后者支持SSL; 
2.或者可以将引擎的源代码stdsoap2.c(或stdsoap2.cpp)直接编译并链接进你们工程里; 
3.gSOAP提供两种使用方式 :一种编译成动态链接库,或者直接将源代码编译进工程。 
   1)gsoap\stdsoap2.cpp是gSOAP的核心代码,要使用gSOAP只要在项目里包含这个文件以及由soapcpp2.exe生成的代码即可。 

   2)typemap.dat文件:用于指定SOAP/XML中的类型与C/C++之间的转换规则。

理解  
1.SOAP客户端:发出SOAP请求Web服务,处理服务应答。 一般情况下,SOAP客户端程序的实现需要一个存根(也称做服务代理),该存根提供客户端调用服务的操作;存根的主要职责是处理参数,通过网络向指定的服务端发送请求,并等待应答,应答到来后再将参数解析出来;客户端只需要调用存根提供的例程,就像调用本地的函数一样。 

2.SOAP服务端:接受SOAP请求并执行请求的服务,返回服务结果。 一般情况下,SOAP服务端程序都有一个基本一致的框架:监听相应端口是否有请求连接,接受并解析SOAP请求,根据请求执行对应的Web Service服务例程,并将执行结果返回给请求的客户端,也就是一个网络WEB服务端的框架结构。

步骤: 
$ wsdl2h -s -o calc.h http://www.cs.fsu.edu/~engelen/calc.wsdl 

$ soapcpp2 calc.h

应用  
1.#include "soapH.h"      —— wsdl中定义操作的soap方法请求/响应 
2.#include "calc.nsmap"   —— 符号命名空间(C++) 
3.客户端:soapClient.cpp 

4.服务端:soapServer.cpp

流程 :构建Web services应用程序 
1.找到web services的wsdl文件; 
2.使用gSOAP中的wsdl2h和soapcpp2工具编译wsdl生成soap的C/C++代码; 
3.明确是需要开发web service中的服务端还是客户端,或者两者; 
4.编写客户端代码,请求和使用web service服务; 
5.参照服务端的测试代码,编写服务端代码,完成web service的具体业务逻辑实现; 

6.配置服务端的IP网络、端口信息,运行服务端(gSOAP服务器)提供web service服务。

跨平台: 
1.不同平台下的gSOAP工具生成的C/C++代码是平台无关的,可以跨平台进行使用编译; 
2.可以重新从源码构建gSOAP工具,但需要满足一些条件: 
   一个C编译器和Bison(或Yacc)来构建soapcpp2。(注Bison和Yacc也是一种编译器) 
   一个C编译器和Flex(或Lex)来构建soapcpp2。 
   一个C++编译器来构建wsdl2h。 

3.可以在windows或者Linux/x86平台上完成web services服务端程序的开发和测试,然后移植到linux/arm上。

WEB服务开发:机制 
1.CGI机制 -- 简单但缓慢 
2.Apache组件 ———— gsoap/mod_gsoap 
3.IIS组件 ———— gsoap/mod_gsoap 

4.开发独立的gSOAP HTTP/HTTPS服务

WEB服务开发 :过程 
1.有WSDL服务定义文件 ———— 参考上面的服务端程序开发流程 
2.无WSDL服务定义文件 
a.编写定义web service服务的C/C++头文件 
b.使用soapcpp2工具生成源代码和WSDL文件 
c.实现web service的业务逻辑和服务端程序 
d.发布WSDL服务 


【参考资料】
1、gSOAP工具的使用
2、gSOAP学习笔记  (推荐)
3、gsoap介绍
4、wsdl2h解析器和soapcpp2编译器选项介绍

你可能感兴趣的:(gSOAP的使用)