欢迎来到天天文库
浏览记录
ID:6160176
大小:64.66 KB
页数:9页
时间:2018-01-05
《使用gsoap进行webservice开发总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、使用gSOAP进行Webservice开发总结1.概述Webservice是创建可互操作的分布式应用程序的新平台。Webservice的主要目标是跨平台的可互操作性。为了达到这一目标,Webservice是完全基于XML、XSD等独立于平台、独立于软件供应商的标准的。Webservice在应用程序跨平台和跨网络进行通信的时候是非常有用的。Webservice适用于应用程序集成、B2B集成、代码和数据重用,以及通过Web进行客户端和服务器的通信的场合。南京内容与资源管理中心需要为第三方提供DNA识别的接口,由于第三方可能位于不同的局域网中,运行于不
2、同的平台,以及第三方形式多样化,为此提供一种通用的接口至关重要。鉴于Webservice在跨平台,跨网络方面的出色表现,南京内容与资源管理中心需要采用Webservice为第三方提供DNA识别接口。南京内容与资源管理中心采用C/C++实现,如何快速的实现Webservice接口呢?开源项目gsoap为此提供了很好的解决方案。2.gSOAP介绍gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服务器端和客户端。由于gSOAP具有相当不错的兼容性,通过gSOAP,我们就可以调用由Java,.Net
3、,Delhpi,PHP等语言开发的SOAP服务,或者向它们提供SOAP服务。gSOAP的编译器能够自动的将用户定义的本地化的C或C++数据类型转变为符合XML语法的数据结构,反之亦然。这样,只用一组简单的API就将用户从SOAP细节实现工作中解脱了出来,可以专注与应用程序逻辑的实现工作了。gSOAP编译器可以集成C/C++和Fortran代码(通过一个Fortran到C的接口),嵌入式系统,其他SOAP程序提供的实时软件的资源和信息;可以跨越多个操作系统,语言环境以及在防火墙后的不同组织。2.1gSOAP常用工具介绍为了便于开发,gSOAP提供了
4、两个常用工具:wsdl2h和soapcpp2。这两个工具主要用来根据wsdl文件生成开发过程使用的C/C++文件。Wsdl2h和soapcpp2选项很多,可以满足不同的需要,详细了解可以通过wsdl2h–h和soapcpp2–h命令获取lwsdl2h解析wsdl文件生成C/C++语法结构的头文件,假设生成的头文件为add.h。add.h不能用于编码,供soapcpp2生成客户端和服务端框架使用。lsoapcpp2根据wsdl2h生成的头文件,生成客户端和服务端程序框架的头文件和源文件,生成文件直接用于客户端和服务端的开发。以add.h为例,一般会
5、生成如下文件,客户端:addClient.c,addH.h,addStub.h,add.nsmap,addC.c;服务端:addServer.c,addC.c,addH.h,addStub.h,add.nsmap。addClient.c:主要实现客户端远程调用接口的实现addC.c:主要实现SOAP协议的底层封装,消息通信等addStub.h:远程接口定义addH.h:SOAP底层实现的相关定义add.nsmap:名字空间定义addServer.c:处理客户端SOAP请求开发过程中使用到的接口基本上都是在***Stub.h中定义的,例如:注意:1
6、>addC.c,addStub.h,addH.h,add.nsmap客户端和服务端在编码时都需要2>客户端和服务端的代码框架可以通过选项控制分开生成2.1gSOAP开发方法使用gSOAP开发通常有两种方法:方法1先编写wsdl文件,然后使用wsdl2h生成soapcpp2需要的头文件,最后再使用soapcpp2生成客户端和服务端需要的框架代码。方法2直接编写soapcpp2需要的头文件,然后使用soapcpp2生成客户端和服务端需要的框架代码。编写头文件时,必须遵循下面的规则:l头文件开头必须包含下面的内容//gsoapnsservicename
7、:add//gsoapnsservicenamespace:http://localhost/add.wsdl//gsoapnsservicelocation:http://localhost//gsoapnsserviceexecutable:add.cgi//gsoapnsserviceencoding:encoded//gsoapnsschemanamespace:urn:addl接口名必须为ns__XXXX的格式,ns(命名空间前缀)可以根据实际需要修改,命名空间前缀和函数名之间必须为两个下划线。l接口返回参数必须为int类型。返回值仅表
8、示soap调用是否成功l接口的最后一个参数为输出参数l如果有多个输出参数,则必须定义为结构,以结构的方式返回l结构命名必须和接口在同一个
此文档下载收益归作者所有