Web Services(三)

2006-10-21:
第三章:soap实质
soap是一个基于xml的协议,用来在计算机之间交换信息。虽然soap能够被用于不同的消息系统,通过不同的传输协议传输,但是soap最初关注的是rpc服务和调用远程方法。
其他的架构,包括corba,dcom和java的rmi,提供了与soap相同的功能,但是soap的消息完全用xml写成。
soap因此代表了web service体系结构的基础。
3.1soap101
soap的规范定义了下面的主要部分:
soap封包的规范:定义了特殊的规则,来封装数据。包括程序细节的数据,比如方法的名称,方法参数,或者返回值。还包含谁处理封包的内容和怎样编码错误信息。
数据编码规则:比如,你要处理股票报价,需要一个规则来编码浮点数据类型;soap包含了自己的一套约定。大多数是基于w3c xml schema规范的。
rpc约定:
3.1.1soap请求
3.1.2soap响应
3.2soap消息
下面是关于soap规范本身。
3.2.1Envelope
每个soap消息都有一个根元素Envelope,不像其他规范,比如HTTP和XML,soap没有定义一个传统的版本模型。soap是使用命名空间来区别不同的版本的。soap1.1命名空间必须是xmlsoap的那个URI,soap1.2必须是w3的URI。如果有其他的命名空间,将会出现版本错误。
3.2.2Header
这个是可选的,提供了一个灵活的架构,来详细说明额外的程序级的需求。比如,用来指明一个数字签名,来保护服务;另外,可以指明一个帐号,来支持单用户soap服务。
3.2.3Body
3.2.4Fault
3.3soap编码
soap包含了一个内置的规则来为数据类型编码。这个能使soap消息显示特殊的数据类型。
xml1.0规范没有包含数据类型编码规范。因此soap最初不得不定义自己的数据编码规范。soap采用了xml schema规范,但是自己也定义了自己的结构,比如数组和引用。
soap数据类型被分为了两大目录:scalar类型和复合类型。scalar类型包含了一个确切的值,比如一个last name,价格或者是产品描述。复合类型包含了多个值,比如一个purchase order,或者是a list of股票。复合类型还分为数组和结构体。
soap的消息的编码样式通过soap-env:encodingStyle属性来设置。xmlsoap是soap1.1的,w3是soap1.2的
3.3.1scalar类型
采用了xml schema的规范中的简单数据类型。
3.3.2复合类型
关于soap toolkit,每个toolkit实现的细节不一样。
指定xsi:type为Array,来建立数组

06-10-25:
3.3.3literal编码
就像前面提到的,你不需要使用soap编码风格。事实上,你可以完全的忽略soap编码规则,而嵌入一个完整的xml文档到你的soap消息中。要这样做,需要参考literal xml,然后指定一个literal xml编码风格。
3.4通过http的soap
soap与任何的传输协议无关。但是soap规范仅仅包含了HTTP上面的细节,http仍然是最流行的soap传输协议。注意HTTP的请求和响应都需要设置他们的text/xml content类型。
作为额外的需求,客户端必须指明soapAction头部。用来指明请求的意图,用来快速的决定soap请求的这个属性,而不用检查soap消息的其他的信息。
尽管服务器不需要完全的soapAction,客户端也必须标识一个空串,或者是null。
soap响应需要http状态码,比如200 ok标识了一个成功的响应。
soap1.2把soapAction的状态从必须转到了option。
3.5soap和w3c
3.6soap的实现
3.6.1soap互用性
soap互用性表现在两个方面:1.最重要的是soap仍然是在它的幼年。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章