SOAP= envelope + encoding rules +RPC representation +binding
其中:编码规则:定义了一个数据的编序机制,从而来定义应用程序中需要使用的数据类型。
RPC:用于表示远端过程调用和响应的约定。
1. 消息交换模型
一个接收到SOAP消息的SOAP应用程序处理消息的步骤:
l 找到并标识SOAP消息中所有需要该应用程序理解的那部分内容
l 检验SOAP被标识的部分内容,处理所有必须强制处理的内容,若不符合双方的约定,则丢弃
l 若该应用程序不是最终接受者,则删除所有第一步标识的内容,附上处理的结果,并转发
1.1 SOAP 结点
当SOAP结点接受并处理一个消息时,将被要求以一个或多个角色来处理,具体是由actor属性决定的,而它的值是个URI,任何一个结点都属于命名空为http://www.w3.org/2001/06//soap-envelope/actor/next的角色。SOAP结点可以使用匿名角色的方式(即省略actor属性)来使自己成为最终SOAP接受者。而SOAP规范本身并没有定义在受到一个指定的消息后,应当如何判断其中信息块应当按照何种角色定义进行何种语义的处理,这些都是应用程序或解决方案自行定义的,也就是说应用程序和服务端绑定后,已经确定了消息传递的路径,并按照与服务端的约定,确定了各个结点的角色。
除了SOAP协议中预先定义的属性,如mustUnderstand 和actor 等,一般允许属性及属性值在XML实例或者在XML Schema 文档中描述,也就是说Schema 文档中描述了出现在SOAP 协议中的元素和元素类型,以及元素中的各种属性,例如:
2. SOAP 消息结构
一个SOAP 消息是由两个部分组成的:Header 和 Body。header 是面向底层系统服务的,而SOAP Body 是面向具体应用程序的,同时在SOAP 的处理逻辑上,也是先处理SOAP Header ,然后处理SOAP Body 的。
当所有的