gSOAP中文文档(1)

 

1、背景
   转贴
 
2  gSOAP文档翻译计划
 
2.1 gSOAP文档翻译计划(序)
前一阵子需要在 unix c平台下创建一个webservice应用。头痛之余,上网查询相关资料,偶然发现了gSOAP开发包。于是乎立即下载试用了一下,效果很好。在它的帮助下,我很快完成了webservice应用的设计开发工作。今天,心里突然升起一个念头:为何不把整个gSOAP的帮助文档翻译一下呢?一来可以方便与其他同仁的交流;二来也可以更好的理解gSOAP的原理与思想。只是此项工程工作浩繁,须怀有革命的大无畏精神尚可完成也。如今唯先写一序,实则有督促之意耳。
 
2.2 gSOAP文档翻译计划( 1、介绍)
1.介绍
    gSOAP编译工具提供了一个 SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。绝大多数的C++web服务工具包提供一组API函数类库来处理特定的SOAP数据结构,这样就使得用户必须改变程序结构来适应相关的类库。与之相反,gSOAP利用编译器技术提供了一组透明化的SOAP API,并将与开发无关的SOAP实现细节相关的内容对用户隐藏起来。gSOAP的编译器能够自动的将用户定义的本地化的C或C++数据类型转变为符合XML语法的数据结构,反之亦然。这样,只用一组简单的API就将用户从SOAP细节实现工作中解脱了出来,可以专注与应用程序逻辑的实现工作了。gSOAP编译器可以集成C/C++和Fortran代码(通过一个Fortran到C的接口),嵌入式系统,其他SOAP程序提供的实时软件的资源和信息;可以跨越多个操作系统,语言环境以及在防火墙后的不同组织。
 
    gSOAP使编写 web服务的工作最小化了。gSOAP编译器生成SOAP的代码来序列化或反序列化C/C++的数据结构。gSOAP包含一个WSDL生成器,用它来为你的web服务生成web服务的解释。gSOAP的解释器及导入器可以使用户不需要分析web服务的细节就可以实现一个客户端或服务端程序。下面是gSOAP的一些特点:
 
l        gSOAP编译器可以根据用户定义的 C和C++数据结构自动生成符合SOAP的实例化代码。
l        gSOAP支持 WSDL 1.1, SOAP 1.1, SOAP 1.2, SOAP RPC 编码方式以及 literal/document 方式.
l        gSOAP是少数完全支持 SOAP1.1 RPC编码功能的工具包,包括多维数组及动态类型。比如,一个包含一个基类参数的远程方法可以接收客户端传来的子类实例。子类实例通过动态绑定技术来保持一致性。
l        gSOAP 支持 MIME (SwA) 和 DIME 附件包。
l        gSOAP是唯一支持 DIME附件传输的工具包。它允许你在保证XML可用性的同时能够以最快的方式(流方式)传递近乎无大小限制的二进制数据。
l        gSOAP 支持 SOAP-over-UDP。
l        gSOAP 支持 IPv4 and IPv6.
l        gSOAP 支持 Zlib deflate and gzip compression (for HTTP, TCP/IP, and XML file storage)。
l        gSOAP 支持 SSL (HTTPS)。
l        gSOAP 支持 HTTP/1.0, HTTP/1.1 保持连接, 分块传输及基本验证。
l        gSOAP 支持 SOAP 单向消息。
l        gSOAP 包含一个 WSDL 生成器,便于web服务的发布。
l        gSOAP 包含一个 WSDL解析器 (将WSDL转换为gSOAP头文件),可以自动化用户客户端及服务端的开发。
l        生成可以单独运行的 web服务及客户端程序。
l        因为只需要很少内存空间,所以可以运行在类似 Palm OS, Symbian, Pocket PC的小型设备中。
l        适用于以 C或C++开发的web服务中。
l        跨平台: Windows, Unix, Linux, Mac OS X, Pocket PC, Palm OS, Symbian等。
l        支持序列化程序中的本地化 C/C++数据结构。
l        可以使用输入和输出缓冲区来提高效率,但是不用完全消息缓冲来确定 HTTP消息的长度。取而代之的是一个三相序列化方法。这样,像64位编码的图像就可以在小内存设备(如PDA)中以DIME附件或其他方式传输。
l        支持 C++单继承,动态绑定,重载,指针结构(列表、树、图、循环图,定长数组,动态数组,枚举,64位2进制编码及16进制编码)。
l        不需要重写现有的 C/C++应用。但是,不能用unions,指针和空指针来作为远程方法调用参数的数据结构中元素。
l        三相编组: 1)分析指针,引用,循环数据结构;2)确定HTTP消息长度;3)将数据序列化位SOAP1.1编码方式或用户定义的数据编码方式。
l        双相编组: 1)SOAP解释及编码;2)分解“forward”指针(例如:分解SOAP中的href属性)。
l        完整可定制的 SOAP错误处理机制。
l        可定制的 SOAP消息头处理机制,可以用来保持状态信息
 
2.3 gSOAP文档翻译计划( 2、符号规定)
懒得翻译了,因为也不能再现出原来的版式。后面章节中分别注明吧。
 
2.4 gSOAP文档翻译计划( 3)
     gSOAP2.5版与 gSOAP 2.4版(或以前版本)的不同按照WS-I Basic Profile 1.0a的要求,gSOAP2.5及以上版本默认使用SOAP RPC文字。这不需要去关心,因为WSDL解析器wsdl2h在你提供一个WSDL文档时,会自动注意这些不同点。增加了一个soapcpp2编译器的编译选项 -e ,用来保持与gSOAP2.4及以前版本的兼容性。
 
2.5 gSOAP文档翻译计划( 4)
gSOAP2.2版与 gSOAP 2.1版(或以前版本)的不同如果你是从2.1版升级到2.2或以后版本,请注意这些变化。为了能够分离传输、内容编码、映射中的接收/发送设置,改变了运行时选项及标志。这些标志分布再四个类中:传输(IO),内容编码(ENC,XML编组(XML)及C/C++数据映射。不再提倡使用旧标志soap_disable_X及soap_enable_X(其中,X表示选项名)。具体内容请参见9.12节。
 
2.6 gSOAP文档翻译计划( 5)
gSOAP2.x版与 gSOAP 1.x版的不同,如果你是从1.x版升级到2.x版,请注意下面的内容。gSOAP2.0及之后的版本是在1.x版基础上重写的。gSOAP2.0之后的版本是线程安全的,但之前版本不是。gSOAP2.x版本中的主要文件已经重新命名,以便与1.x版区分。
 
gSOAP 1.X gSOAP 2.X
soapcpp soapcpp2
soapcpp.exe soapcpp2.exe
stdsoap.h stdsoap2.h
stdsoap.c stdsoap2.c
stdsoap.cpp stdsoap2.cpp
 
1.x版升级到2.x版并不需要进行大量的代码重写工作。所有2.x版相关的函数都定义在stdsoap2.c[pp]文件中,这个文件是由gSOAP编译器自动生成的。所以,用1.x版开发的服务端或客户端代码需要进行修改以适应2.x版中函数的变化:在2.x版中,所有的gSOAP函数都增加了一个参数用来保存一个gSOAP运行环境实例。这个参数包括了文件描述,表,缓冲,标志位等,它在所有gSOAP函数中都是第一个参数。
 
gSOAP运行环境实例是一个 struct soap类型的变量。当客户端程序访问远程方法前或当服务端程序能够接收一个请求前,必须先将这个运行环境变量初始化。在2.x版中新增了3个函数来负责这些事情:
函数                                        解释
soap_init(struct soap *soap)                初始化环境变量(只需执行一次)
struct soap *soap_new()                     定义并初始化环境变量并返回一个该变量的指针
struct soap *soap_copy(struct soap *soap)    定义一个环境变量并从已有的环境变量中拷贝环境信息

你可能感兴趣的:(gSOAP中文文档)