linux基础学习之 gSOAP(1)

一、    Gsoap的重要工具

Wsdl2h

是WSDL/模式转换器和数据绑定工具。

 

把一个WSDL文件生成一个C++头文件

Wsdl2h file.wsdl

这个生成的头文件是一个WEB服务的规范,包含了参数类型和服务函数定义在一个可以理解的格式在C++里面。WEB服务操作表示为函数原型。生成的头文件也包含各种注释,有关WEB服务WSDL中定义的属性。

 

生成一个ANSI C, wsdl2h –c file.wsdl

 

多个WSDL文件可以一次生成并包含在一个文件里面

Wsdl2h –o file.h file1.wsdl file2.wsdl….

 

你可以检索WSDL文件从一个或多个URI

Wsdl2h –o file.h http://www.example.com/example.wsdl

 

把XML模式转换成C或者C++与XML绑定代码

Wsdl2h –o file.h file.xsd file2xsd…

 

 

Soapcpp2

存根(stub)/骨架(skeleton)编译器和代码生成器。

 

用一个生成的头文件生成一个高级的XML数据和C++绑定

Soapcpp2 –i –limport file.h

 

 

二、    The wsdl2h WSDL and SchemaImporter

Wsdl2h工具可以将一个或多个WSDL文件转换成C/C++文件。同样可以应用在没有WSDL时将XML模式转换成C/C++文件实现XML数据和C/C++数据的绑定。

 

工具wsdl2h只生成一个文件,这个头文件包含所有的信息,从WSDL和XML模式文件中获得。

 

三、    Wsdl2h OPTION & DESCRIPTION

-a    为当地元素与匿名类型索引结构名称

-b    双向操作以服务单向响应消息

-c    生成C源代码

-d    使用DOM来填充xs:any 和xsd:anyType的元素

-f     生成模式扩展扁平C++类层次结构

-g    生成全球顶级元素声明

-h    打印出HELP信息

-l path     使用path去为#import源文件定位

-i     不使用import

-j     不生成SOAP_ENV__Header 和 SOAP_ENV__Detail定义

-k    不生成SOAP_ENV__Header mustUnderstand限定符

-l     包含license信息在output里面

-m   使用xsd.h模块导入原始类型

-N name         使用名称前缀的服务,为每个绑定服务

-n name          使用的名称作为基本空间前缀名称,而不是NS

-o file            输出到文件

-s     不生成STL代码

-t file     使用类型映射文件而不是默认的文件typemap.dat

-U          Unicode的XML名称映射到UTF8编码的UnicodeC/C++标识符

-u           不生成unions

-v           详细输出

-W          抑制警告

-x           不生成_XML any/anyAttribute可扩展元素

 

 

四、    Customizing Data Bindings WithThe typemap.dat File

对于wsdl2h工具typemap.dat文件旨在通过自定义或优化类型绑定映射架构类型的C/C++类型。它包含自定义XML模式为C/C++的类型绑定和一些绑定为方便起见定义。

 

类型绑定可以提供XML模式类型绑定到C/C++类型为您的项目。类型绑定有四个部分:

 

Prefix__type = declaration | use | ptr-use

 

‘prefix__type’ 是C/C++翻译模式的类型,‘declaration’ 在头文件里面介绍C/C++类型,’use’选项是直接指定类型是如何使用的,’ptr-use’ 指定如何使用类型为指针类型。

 

五、      Using the soapcpp2 Compiler and Code Generator


soapcpp2编译器和代码生成器从从命令行调用和可选的需要头文件作为参数,或者,当文件名是不存在的名称,解析标准输入:

>soapcpp2 [aheaderfile.h]

 

其中,aheaderfile.hwsdl2h产生或开发的C/C++头文件中手动指定作为函数原型和C/C++数据类型的SOAP/XML服务操作中auomappedXML

 

soapcpp2工具产生的C/C++源文件。这些文件被用来实现SOAP/XML客户端和服务,并实现高级的XML数据绑定逻辑转换成C/C++数据转换成XML,反之亦然。

 

由soapcpp2生成的文件有:

 

soapStub.h      从输入的头文件产生的修改和注释的头文件

soapH.h          主要的头文件包含所有的客户端和服务的来源

soapC.cpp       对指定的数据结构序列化和反序列化

soapClient.cpp              远程操作的客户机存根例程

soapServer.cpp       服务框架的例程

soapClientLib.cpp   客户端存根结合本地的静态的(反)序列化

soapServerLib.cpp  服务框架结合本地静态的(反)序列化

soapXYZProxy.h

soapXYZProxy.cpp

soapXYZObject.h

soapXYZService.h

soapXYZService.cpp

 

.xsd               一个ns.xsd文件与使用的每个命名空间前缀ns的XML模式生成

通过在头文件输入到编译器的数据结构

 

.wsdl              一个ns.wsdl文件与在头文件中输入使用的服务操作到编译器的每个命名空间前缀ns的WSDL描述生成

 

.xml               几个SOAP / XML请求和响应的文件被生成。这些示例消息文件是有效的前提是充足的架构命名空间指令添加到头文件或生成的.nsmap命名表中为

客户/服务不用手改性

 

.nsmap           通过服务操作使用的每个命名空间前缀纳秒生成一个文件ns.nsmap

在输入到编译器头文件

 

Stdsoap2.h      stdsaop2.cpp运行时库的头文件

 

Stdsoap2.c      运行C库与XML解析器和运行时支持例程

 

Stdsoap2.cpp 

 

六、    Soapcpp2 Options

-1           生成SOAP1.1绑定

-2           生成SOAP1.2绑定

-0           没有SOAP绑定,使用REST

-C           只生成客户端代码

-S           只生成服务端代码

-T           生成服务器的自动测试的代码

-Ec         产生深层数据复制的额外程序

-Ed         生成深数据删除多余的程序

-Et         

-L           不生成soapClient.cpp/soapServerLib

-a           使用SOAPAction 和 WS-Addressing 去调用服务器端的操作

-A          使用SOAPAction去调用服务器端的操作

-b          

-c           生成纯C代码

-d <path>              通过《path》把源代码保存到指定目录中

-e           生成SOAP RPC编码样式绑定

-f N       

-h           打印一个简要的只用信息

-I<path>         使用<path> for #import(用‘:‘分离或者在windows里面用’;‘分离)

-I            生成可链接模块(实验)

-m

-v           详细输出

 

你可能感兴趣的:(linux基础学习之 gSOAP(1))