分类: C/C++
2011-04-20 13:23:49
Web Services技术使异种计算环境之间可以共享数据和通信,达到信息的一致性。随着异种计算机环境的不断增加,我们会更加经常的调用各种不同计算机体系中编写和发布的Web Services,作者在本文中给出了使用VB应用程序调用java平台编写和发布的Web Services的实践过程, 并且分析了如何根据WSDL文件构造SOAP消息的方法。
一 SOAP简介
1.SOAP定义
SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议.
它包括四个部分:
SOAP封装(envelop): 封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;
SOAP编码规则(encoding rules): 用于表示应用程序需要使用的数据类型的实例;
SOAP RPC表示(RPC representation): 表示远程过程调用和应答的协定;
SOAP绑定(binding): 使用底层协议交换信息。
2.SOAP消息
SOAP采用了已经广泛使用的两个协议:HTTP和XML。其中HTTP用于实现SOAP的RPC风格的传输,而XML是它的编码模式,一个SOAP请求实际上就是一个HTTP POST请求。
其它详细的SOAP方面的信息请参考
二 WSDL简介
WSDL (Web Services Description Language)是一种XML Application,他的作用是将一个Web Services描述为一组服务访问点.
WSDL文档将一个Web Services描述成一组网络端点或者端口,在WSDL中,由于服务访问点和消息的抽象定义已经和具体的服务期部署和数据格式绑定分离,因此可以再次使用这些抽象对象: 消息,是对需要交换信息的抽象描述;端口类型,是对Web Service提供的操作的抽象集合。
特定端口类型的具体协议和数据格式定义构成了一个可以从用的绑定,一个端口定义成一个可重用绑定和网络地址的关联,一组端口构成了一个服务。
WSDL在定义Web Sevices时使用了以下元素:
Types: 数据类型的容器,他采用一些类型系统(比如常用的XSD)
Message: 通信消息的抽象类型化定义
Operation: 服务提供的操作的抽象化描述
Port Type: 一个或者多个端点支持的一组操作的抽象
Binding: 特定端口类型的具体协议和数据格式定义
Port:定义为binding和网络地址的关联的单个的端点
Service: 一组相关的端点的结合
详细的WSDL定义和相关信息请参考:
gSOAP 是一个开源的项目,用它可以方便的使用c/c++地进行SOAP客户端和服务器端编程,而不必了解xml和SOAP协议的细节。这样使用者就可以专注于自 己的web service 客户端或服务器端的编写,而不用纠缠与其它细节。我第一次接触这些东西,我对SOAP的理解是这样的:以http协议为基本的通信协议,以xml文件形式 请求远程服务,再以xml文件的形式返回执行结果,我理解的就这么简单了.