gSOAP特点概括:
gSOAP是一款开源软件,具有出色的可移植性,支持多种平台,包括嵌入式系统和小系统。自2001年以来,经过几年的发展和试验,它已成熟稳定,并被许多工业项目和产品采用。自2003年以来,它经历了超过150,000次下载,获得了众多公司,包括一些财富100强企业的支持。gSOAP提供了一个包含所有功能的软件包,由独立第三方工具和库确保可靠运行。它既提供自由许可也支持商业许可。gSOAP支持C和C++,能独立编译生成SOAP的代码来序列化或反序列化数据结构。它支持广泛的行业标准协议,包括SOAP 1.1/1.2、WSDL 1.1/2、UDDI,以及传输协议如HTTP/S、TCP、UDP等。此外,它还支持安全协议如HTTPS,包括认证令牌、数字签名等,以及速度优化和内存管理特性。
gSOAP特点详细解析:
gSOAP的编译器能够根据用户定义的C和C++数据结构自动生成符合SOAP的实例化代码。
它支持WSDL 1.1, SOAP 1.1, SOAP 1.2,以及RPC和literal/document编码方式,是少数完全支持SOAP1.1 RPC编码功能的工具包之一,包括多维数组及动态类型。
gSOAP支持MIME (SwA) 和 DIME 附件包传输,且是唯一支持DIME附件传输的工具包,允许在保证XML可用性的同时以最快方式(流方式)传输近乎无大小限制的二进制数据。
它支持SOAP-over-UDP传输,并支持IPv4和IPv6。
gSOAP支持Zlib deflate和gzip压缩功能,适用于HTTP、TCP/IP和XML文件存储。
它支持SSL (HTTPS),以及HTTP/1.0、HTTP/1.1保持连接、分块传输和基本验证。gSOAP还支持SOAP单向消息。
它包含一个WSDL生成器,便于web服务的发布,以及一个WSDL解析器,将WSDL转换为gSOAP头文件,以自动化客户端及服务端的开发。
gSOAP生成可以单独运行的web服务及客户端程序,只需很小的内存空间即可运行,适用于小型设备,如Palm OS, Symbian, Pocket PC等。
它适用于以C或C++开发的web服务中,并具有跨平台特性,包括Windows, Unix, Linux, Mac OS X, Pocket PC, Palm OS, Symbian等。
gSOAP支持序列化程序中的本地化C/C++数据结构,并提供输入和输出缓冲区来提高效率,但无需完全消息缓冲确定HTTP消息长度。它采用三相序列化方法,使像64位编码的图像这样的数据在小内存设备(如PDA)中以DIME附件或其他方式传输成为可能。
它支持C++单继承、动态绑定、重载、指针结构(列表、树、图、循环图、定长数组、动态数组、枚举、64位二进制编码和16进制编码)。
gSOAP不需要重写现有的C/C++应用,但不能用unions、指针和空指针作为远程方法调用参数的数据结构元素。
gSOAP采用三相编组方法:分析指针、引用、循环数据结构;确定HTTP消息长度;将数据序列化为SOAP1.1编码或用户定义的数据编码方式。
它采用双相编组方法:SOAP解释及编码;分解“forward”指针(例如分解SOAP中的href属性)。
gSOAP具有全面的SOAP错误处理机制,并允许定制SOAP消息头处理机制,以保持状态信息。
对于从gSOAP 2.2版或以后版本升级的用户,需注意选项及标志的分离,用于传输、内容编码、映射的接收/发送设置,这些标志分布在四个类中:传输(IO)、内容编码(ENC)、XML编组(XML)及C/C++数据映射。
对于从gSOAP 1.x版升级的用户,gSOAP2.0及之后版本是在1.x版基础上重写的,增加了线程安全特性。gSOAP2.x版本中的主要文件已重新命名,以与1.x版区分。
从1.x版升级到2.x版并不需要进行大量的代码重写工作,因为所有相关函数定义在stdsoap2.c[pp]文件中,该文件由gSOAP编译器自动生成。在2.x版中,所有gSOAP函数都增加了一个参数用来保存gSOAP运行环境实例,这个实例包括了文件描述符、表、缓冲、标志位等。
用户需要定义环境变量,并在调用远程方法或服务端能够接收请求前初始化。gSOAP提供了三个函数用于环境变量的初始化、定义和复制。一旦环境变量定义好,就可以重复使用而不必再次初始化,只有在需要线程独占访问时才需要一个新的环境变量。
服务端代码在调用soap_serve函数前需要定义相关环境变量。可以使用soap_init、soap_new、soap_copy函数初始化和定义环境变量,或者使用soap_serve和soap_new函数处理一个或多个请求。gSOAP支持多线程技术处理请求。
gSOAP是独立开发包,不需要任何第三方软件支持,除非需要SSL(HTTPS)及压缩功能,这时可以安装OpenSSL及Zlib库。
要开始使用gSOAP创建web服务应用,你需要一个C/C++编译器,可执行的gSOAP的stdsoap2(适用于Windows)编译器,以及可执行的gSOAP的wsdl2h(适用于Windows)WSDL解析器。还需要'stdsoap2.c'或'stdsoap2.cpp'及'stdsoap2.h'文件来实现SOAP功能。支持SSL(HTTPS)及压缩功能时,可以安装OpenSSL及Zlib库。gSOAP需要C++编译器编译'wsdl2h'WSDL解析器,并使用Bison或Yacc、Flex或Lex(推荐使用Bison及Flex)。
在软件包'samples'目录下有许多开发实例,可以用'make'命令编译这些例子,其中最简单的例子是'samples/oneliners'。
本快速指南旨在帮助你快速开始使用gSOAP进行web服务及客户端程序的开发。了解一些SOAP协议及C/C++语法是必需的。gSOAP预编译器可以自动实现客户端程序的存根例程,将web服务客户端及服务端的开发工作自动化。通过WSDL解析器生成的头文件,预编译器自动生成客户端或服务端程序的存根例程定义,以及远程方法的程序框架。生成的代理类包含数据结构的序列化和反序列化代码,以便将数据编码或解码为XML。
gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。绝大多数的C++web服务工具包提供一组API函数类库来处理特定的SOAP数据结构,这样就使得用户必须改变程序结构来适应相关的类库。与之相反,gSOAP利用编译器技术提供了一组透明化的SOAP API,并将与开发无关的SOAP实现细节相关的内容对用户隐藏起来。