linux基础学习之 gSOAP文件夹中的README中文翻译

感谢使用gSOAP!

gSOAP工具包为c/c++服务器和客户端WEB服务应用程序提供了一个跨平台的软件开发工具包,简化了在任何类型的应用程序中使用XML。该工具包支持SOAPRPC 1.1、1.2编码和文档、文字的样式,WSDL 1.1 ,MTOM\MIME\DIME附件(流), SOAP –over – UDP请求 – 响应和单向消息。该工具包还支持 WS – Addressing 和 WS – Security,其他几个可用的 WS -*或正在开发。参考网站:http://gsoap2.sourceforge.netfor project status and latest news.

 

       gSOAP“soapcpp2” 编译器和代码生成器 “stdsoap2”运行引擎自从版本2.1.3发行以来都是稳定的。

 

       gSOAP“wsdl2h” WSDL/模式解析器和代码生成器自从wsdl2h的1.1.0版本以来都是稳定的。”wsdl2h” 工具完全支持WSDL 1.1 ,XML工具,WS – Policy ,和其他的WS-*协议。

 

WHAT’S COOL?

gSOAP “wsdl2h” 工具是一个 gSOAP 应用程序本身,它演示了通用XML处理工具箱的能力,可以用来解析WSDL, XML模式和 SOAP/X,L。

 

       gSOAP工具支持流媒体技术来加快SOAP/XML 和MTOM/MIME 附件转移潜在无限的数据长度。

 

       gSOAP工具是唯一的工具包,支持本地的序列化C和c++直接在XML数据类型。你可以用它来导出和导入应用程序数据在XML中,而不必编写包装器例程。

 

       gSOAP工具包确保小内存占用。XML是一种作为处理瞬态格式而不是缓冲。许多优化应用减少资源需求,加快XML解析。

 

       gSOAP工具包提供了独立的HTTP(S)的web服务器功能作为Apache国防部和IIS钩子(位于gsoap / mod_gsoap)。CGI和FastCGI都受支持。一个web服务器的例子展示了独立的功能包含在包中。

 

特色

XML数据和C/C++绑定的工具。

XML schema < = > C / c++类型绑定意味着XML和C / c++数据类型安全。

WSDL 1.1/2.0,XSD 1.1/2.0,SOAP 1.0/1.1兼容。

其他HTTP(S)1.0/1.1操作(GET、PUT、POST等)对XML、JSON、等等。

通过套接字发送和接收XML、文件FD和c++流。

 

(特色)略过。

 

这个分布包包含独立于平台的源代码。预先构建的  “soapcpp2”和“wsdl2h的二进制文件包括下列平台:

       *Win32 i386 compatible

       *MAC OS X

 

二进制文件位于gsoap /bin。

 

重要的是这些 “wsdl2h”二进制文件使用的是默认的配置而不需要SSL支持。(没有HTTPS站点访问)

 

GETTING  STARTED

先按照 INSTALL.txt里面的安装说明。

 

gSOAP “wsdl2h” 工具将wsdl转换成一个gSOAP 头文件来处理 gSOAP 代码代码生成器 “soapcpp2” 生成XML序列化,存根和骨架代码来构建WEB服务应用程序。使用“wsdl2h '后面通过“ soapcpp2”整组WSDL和XML模式的转化为代表C或C ++的数据结构和相关的XML解析器。您也可以直接在现有的C / C ++数据结构使用gSOAP“ soapcpp2”工具声明来创建XML序列化例程这些类型简化XML数据的存储。

 

翻译的WSDL示例代码的两个步骤:

 

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

       $soapcpp2 -CL -I/path/to/gsoap/import calc.h

 

“calc.h” 头文件中包含服务和XML模式类型在C/C++,和其他的从WSDL中复制的有用的信息一起关联到服务中。在上面运行 Doxygen 生成一套漂亮的页面。

 

不要直接包括wsdl2h生成“ calc.h '头文件到您的代码(声明生成的代码复制)。头文件由gSOAP的存根编译' soapcpp2 '为你生成一下的文件:

 

soapClient.cpp              用于服务调用的客户端存根例程

soapServer.cpp      服务器端框架为服务器发展例程

soapC.cpp             C/C++参数编组代码

cals.nsmap            一个XML –to- C/C++ 的命名空间映射表

 

编译一个客户端,你要做的就是编译和链接 “soapC.cpp” “soapClient.cpp” “stdsoap2.cpp” 和你的代码。在你的代码里访问服务:

 

#include"soapH.h"

       #include"calc.nsmap"

       main()

       {struct soap *soap = soap_new(); // alloc 'soap' engine context

         double result;

         if (soap_call_ns2__add(soap, NULL, NULL, 1.0,2.0, result) == SOAP_OK)

           std::cout << "The sum of 1.0 and2.0 is " << result << std::endl;

         else

           soap_stream_fault(soap, std::cerr);

         soap_destroy(soap); // dealloc serializationdata

         soap_end(soap);     // dealloc temp data

         soap_free(soap);    // dealloc 'soap' engine context

       }

 

 

首先,导入所有soapcpp产生的定义和命名空间映射表。然后soap_call_ns2__add ()调用服务。这个功能是从soapcpp2的calc.h文件生成。该头文件包含呼叫功能的指令。

 

开发一个c++客户机应用程序基于c++代理对象而不是c函数,使用“soapcpp2”选项- j:

 

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

       $soapcpp2 -j -CL -I/path/to/gsoap/import calc.h

 

 

这会产生“soapcalcProxy.h '和'soapcalcProxy.cpp ”与服务方法的calcProxy类,你可以用它来调用服务。例如:

 

#include"soapcalcProxy.h"

       #include"calc.nsmap"

       main()

       {calcProxy service;

         double result;

         if (service.add(1.0, 2.0, result) == SOAP_OK)

           std::cout << "The sum of 1.0 and2.0 is " << result << std::endl;

        else

           service.soap_stream_fault(std::cerr);

         service.destroy(); // dealloc serializationand temp data

       }

 

编译上述程序和 “soapC.cpp”“soapcalsProxy.cpp” “stdsoap2.cpp”链接。

 

 

BUILD  NOTES

QNX

 

On QNX the bison.simple file is located in$QNX_HOST/usr/share/bison.simple

Update your .profile to include:

 

       exportBISON_SIMPLE=$QNX_HOST/usr/share/bison/bison.simple

       exportBISON_HAIRY=$QNX_HOST/usr/share/bison/bison.hairy

 

WIN32

 

Bison 1.6 can crash on Win32 systems ifYYINITDEPTH is too small Compile with

/DYYINITDEPTH=5000

你可能感兴趣的:(gsoap)