购买服务 会员注册 会员登录
  设为首页 加入收藏 联系我们
Welcome to WebXml.com.cn
Web Services 网站建设 域名交易 服务支持 下载中心 信息资讯 联系我们 返回首页
 
站点数据 - 信息资讯 - 热点信息

Web服务(Web Services)SOA的实现协议——SOAP

www.WebXml.com.cn 发表日期:2010年12月06日 17:47 星期一
 

 

  SOAP(Simple Object Access Protoc01)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议,它包括四个部分:SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它,以及如何处理它们的框架;SOAP编码规则(encodingrules),用于表示应用程序需要使用的数据类型的实例;SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。

  虽然这四个部分都作为SOAP的一部分,是作为一个整体定义的,但他们在功能上是相交的、彼此独立的。特别的,封装和编码规则是被定义在不同的XML命名空间(name space)中,这样使得定义更加简单。

  SOAP的两个主要设计目标是简单性和可扩展性。这就意味着有一些传统消息系统或分布式对象系统中的某些性质将不是SOAP规范的一部分。

  SOAP定义了一种在HTTP客户端和服务器端传输命令和参数的机制。SOAP不关心什么操作系统、编程语言或在服务器端或客户端使用的对象模型:除了需要使用HTTP传输外,与其他无关。

  SOAP是简单的。客户端发送一个请求给服务器,调用相应的对象,然后服务器返回结果。这些消息是XML格式的,并且封装成符合HTTP协议的消息。SOAP通过已有的Internet下层结构来工作。你不需要作任何工作,它符合任何路由器、防火墙或代理服务器。

  SOAP客户请求封装在一个HTTP-POST包中。下面的例子摘自Internet-draft规范说明中:

  第一个例子阐明了SOAP中一个简单的通信信息,包括了两个不是SOAP定义而是应用程序定义的元素:头块元素alert control和体块元素alert。头块元素包括两个参数:priority和expires。体块元素包括的是实际传送的信息。

  SOAP通信与底层的不同协议和不同的交换格式有关,在下面的例子中,SOAP使用HTTP作为底层通信协议,从而可以很好的使用request/response机制来传送信息。

  SOAP/HTTP请求包括一个GetLastTradePri ce的块元素,该请求携带一个字符串参数和ticker符号,在SOAP应答中返回一个浮点数。XML名域用来区分SOAP标志符和应用程序特定的标志符。

  其中,POST是HTTP的动词,所有的HTTP消息都需要主机。Content—Type和Content—Length部分是所有包含有效载荷(payload)的HTTP消息所需要的。Content—Type“text/xml”表示payload是一个发送给服务器的XML消息(或者是发送一个具有扫描应用程序头功能的防火墙的消息)。XML代码是易懂的,比如:Envelope和Body部分规定了普通payload打包机制;

  部分包括一个被称为<符号>的部分,其中包含了股票交易的符号。这个请求的目的是非常明显的:得到某个特定股票的最后一次交易价格——本例子中是DIS(Disney)。

  发送这个消息的程序仅仅需要知道如何格式化一个SOAP请求:构成一个请求所需要的HTTP头格式和XML格式。本例子中,程序知道需要形成的是一个股票价格的请求。接受这个消息的HTTP服务器通过这个HTTP头SOAPMethodName知道这是一个SOAP请求;然后服务器发送或处理消息的相应部分。

  SOAP定义了两种类型的消息,请求和响应,从而允许客户端能够递交一个远端请求,允许服务器端能够响应这些请求。上面所举的是一个请求的例子;下面列举了对该请求的响应:

  这个例子的前面三行仍然是标准的HTTP:第一行表明这是对前面的POST请求的一个响应,第二行和第三行指出了内容类型和长度。

  XML头封装了一个SOAP的payload。XML的部分包含了对一次交易价格请求的响应;它的子部分(Price)表明了返回这个请求的值。

 
 
 
关闭本窗口
 
 
 
WEB 服务 网站建设 域名交易 服务支持 下载中心 信息资讯 联系我们 首 页
版权所有 © 2006 - 2014 上海思集信息科技有限公司 保留所有权利        本站声明 Search powered by Google
Powered Asp.net 2.0