没有合适的资源?快使用搜索试试~ 我知道了~
SOAP以XML形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制。SOAP本身并没有定义任何应用程序语义,如编程模型或特定语义的实现;实际上它通过提供一个有标准组件的包模型和在模块中编码数据的机制,定义了一个简单的表示应用程序语义的机制。这使SOAP能够被用于从消息传递到RPC的各种系统。
资源详情
资源评论
资源推荐
SOAP 协议
一、 SOAP 简介
SOAP 是 Simple Object Access Protocol 的所写,即简单对象访问协议。SOAP 是基于 XML 的简易协议,可
使应用程序在 HTTP 之上进行信息交换。
(一)SOAP 产生原因:
对于应用程序开发来说,使程序之间进行因特网通信是很重要的。
目前的应用程序通过使用远程过程调用( RPC)在诸如 DCOM 与 CORBA 等对象之间进行通信,但是
HTTP 不是为此设计的。RPC 会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。
SOAP 是通过 HTTP 在应用程序间通信的更好的方法,因为 HTTP 被所有的因特网浏览器及服务器支持。
SOAP 提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以
互相进行通信。
(二)SOAP 的标准化:
在 2000 年 5 月, SOAP 1.1 曾在一份记录 中被建议到 W3C (由 开发商: IBM, Lotus, Microsoft 以及
Userland),作为用于在分布式环境中交换信息的一种协议。
W3C SOAP 1.1 文档仅仅是一份用于讨论的纪录(NOTE)。此记录的发布不代表 W3C 对其任何程度的
认可。
W3C 的 XML Protocol 工作组目前正工作于 SOAP 1.2。第一份工作草案发布于 2001 年 12 月 17 日。SOAP
1.2 于 2003 年 6 月 24 日被发布为 W3C 推荐标准。
(三)SOAP 应用举例:
SOAP 协议用来进行 RPC 调用,即远程过程调用。如果我们 PC 机操作系统是 XP,那么 XP 的 UPnP 功能
就会使用 SOAP 协议来进行 RPC 调用。
例如:我们在使用 BitComet 软件进行下载,发现远程发起的连接无法连接上,那么我们就可以打开 NAT
设备的 UPnP 功能,让网关设备或 NAT 设备根据 BitComet 利用 XP 的 UPnP 功能发起的 RPC,自动执行动
态端口映射,从而达到加快下载速度的目的。
(四)SOAP 学习教程:
SOAP 具体细节,可以参考 W3C 的网上教程:http://www.w3school.com.cn/soap/index.asp。
二、 gSOAP 使用
我们将重点放在如何使用 SOAP 来开发 Web Services 的应用方面,也即如何使用 gSOAP 上面。
使用开发语言特别是比较底层的语言,如 C/C++等,使用 SOAP 协议开发 Web Services 应用比较麻烦。开
发人员很大的精力需要花在如何将本地的数据结构转换成 SOAP 消息中可以使用的 XML 元素,不但效率
低下,而且容易出错。gSOAP 就是将这些和程序员相关性不大的工作分离出来,让程序员关注于应用程
序本身的开发。
gSOAP 源码包的下载地址:http://sourceforge.net/project/showfiles.php?group_id=52781,当前的最新版本是
2.7。
(一)gSOAP 的编译
A、编译依赖性:
gSOAP 的基本功能配置不需要任何第三方软件的支持,但是如果需要压缩和 SSL 加密功能,则需要 Zlib
和 OpenSSL 库。
编译 soapcpp2 编译器,您的机器需要安装 Bison 和 Flex 或者老的 Yacc 和 Lex 二进制可执行文件。
B、gSOAP 的编译:
假设,我们下载的安装包是 2.7.11 版本的(安装包名称:gsoap_2.7.11.tar.gz)
首先,使用命令:tar zxf gsoap_2.7.11.tar.gz,解压源码包,进入解压后的目录 gsoap-2.7,编译可以按如下
步骤:
1. ./configure –enable-samples (这里的—enable-samples 表示需要示例程序)
2. make
3. make install
安装的其他详细信息可以阅读 gsoap-2.7 目录下的 README.txt 文件。
C、编译输出文件说明:
可执行程序说明,如下表:
可执行文件名 描述
soapcpp2
gSOAP 的编译器,这里编译器的概念不是指一般意义上的编译器,而是根据远程
过程方法的函数原型,生成 Client 端的 Stub 源程序以及 Server 端的 Skeleton 源程
序的一种工具;(注:soapcpp2 的源码在 gsoap-2.7/gsoap/src 目录里面)
wsdl2h
gSOAP 的 WSDL 文件的解析器。(注:wsdl2h 的源码在 gsoap-2.7/gsoap/wdsl 目录
里面)
注:在源码包的 gsoap-2.7/gsoap/bin 目录下有预先编译好的二进制文件,包括 macosx、win32 和 linux 平台
库文件说明,如下表:
库文件名 描述
libgsoap.a
C 运行时库
libgsoapck.a
支持 HTTP cookie 特性的 C 运行时库
libgsoapssl.a
支持 cookie、SSL 和压缩特性的 C 运行时库
libgsoap++.a
C++运行时库
libgsoapck++.a
支持 HTTP cookie 特性的 C++运行时库
libgsoapssl++.a
支持 cookie、SSL 和压缩特性的 C++运行时库
注:以上库都由 stdsoap2.c[pp]文件编译而来,也可以在编译 Client 程序或 Server 程序时直接用 stdsoap2.c
文件来代替这些库。
(二)使用 gSOAP 开发 Web Services 应用
使用 gSOAP 开发 Web Service 程序,大致步骤如下:
1、 将需要向外提供的服务,用函数原型的形式放在某个 gSOAP 头文件中(以 xxx.h 形式命名的文件,语
法和 C 语言的头文件差不多);
2、 使用 soapcpp2 编译器生成 Web Service 的 skeleton 源文件;
3、 编写 Web Service 源程序;
4、 编译 Web Service 服务程序。
Web Service 服务程序的开发示意如下:
A、gSOAP 头文件的编写:
1、SOAP 远程方法的原型
原型声明和 C/C++函数声明一样,但是函数的返回值必须为 int,函数返回值作为 SOAP 错误码。(如果
发生错误,那么 Server 端会将函数返回值,也即错误码放在 SOAP 返回消息的 fault 元素中。)
2、gSOAP 编译器惯例
剩余12页未读,继续阅读
zipao
- 粉丝: 0
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0