SOAP协议的深度解析

SOAP协议的深度解析笔记上传:1.soap与http的区别:HTTP只负责把数据传送过去,不会管这个数据是XML、HTML、图片、文本文件或者别的什么。( HTTP就是邮局的协议,他们规定了你的信封要怎么写,要贴多少邮票等。。。。)而SOAP协议则定义了怎么把一个对象变成XML文本,在远程如何调用等  (SOAP就是你们之间交流的协议,负责把你所需要表达的意思写在信纸上,同时也负责让对方能够看得懂你的信。)2.s…

大家好,又见面了,我是你们的朋友全栈君。

笔记上传:

1.soap与http的区别:

HTTP只负责把数据传送过去,不会管这个数据是XML、HTML、图片、文本文件或者别的什么。( HTTP就是邮局的协议,他们规定了你的信封要怎么写,要贴多少邮票等。。。。 )

而SOAP协议则定义了怎么把一个对象变成XML文本,在远程如何调用等   (SOAP就是你们之间交流的协议,负责把你所需要表达的意思写在信纸上,同时也负责让对方能够看得懂你的信。)


2.soap简介:

SOAP(Simple Object Accrss Protocol,简单对象访问协议)是一种简单的基于XML的协议,可以使应用程序在分散或分布式的环境中,多数通过HTTP来传输信息的。(soap的默认端口号8880,ftp的代理服务器的默认端口号是21

SOAPWeb Service的通信协议,是基于XML语言和XSD标准,其定义了一套编码规则,编码规则定义如何将数据表示为消息,以及怎样通过HTTP协议来传输SOAP消息,由四部分组成:

(1) SOAP信封(Envelope):定义了一个框架,框架描述了消息中的内容是什么,包括消息的内容、发送者、接收者、处理者以及如何处理消息。

(2)SOAP编码规则:定义了一种系列化机制,用于交换应用程序所定义的数据类型的实例。

(3) SOAP RPC表示:定义了用于表示远程过程调用和应答协定。

(4)SOAP绑定:定义了一种使用底层传输协议来完成在节点间交换SOAP信封的约定。

SOAP消息基本上是从发送端到接收端的单向传输,常常结合起来执行类似于请求/应答的模式。

3.soap特性:

1).SOAP是一种轻量级通信协议

2).SOAP用于应用程序之间的通信

3).使用SOAP的应用使用HTTP协议通信

4).SOAP独立于平台

5).SOAP独立于编程语言

6).SOAP基于XML

7).SOAP很简单并可扩展

8).SOAP允许绕过防火墙

4.soap的消息交换模型

1)、SOAP结点

     SOAP结点表示SOAP消息路径的逻辑实体,用于进行消息路由或处理。SOAP结点可以是SOAP消息的发送者、接收方、消息中介。

    在SOAP消息模型中,中间方为一种SOAP结点,负责提供发送消息的应用程序和接收方间的消息交换和协议路由功能。中间方结点驻留在发送结点和接收结点之间,负责处理SOAP消息头中定义的部分消息。SOAP发送方和接收方之间可以有0个或多个SOAP中间方,为SOAP接收方提供分布式处理机制。

SOAP协议的深度解析

2).一般,SOAP消息中间方分为两种:

A、转发中间方:转发中间方通过在所转发消息的SOAP消息头块中描述和构造语义和规则,从而实现消息处理。

B、活动中间方:活动中间方利用一组功能为接收方结点修改外部绑定消息,从而提供更多的消息处理操作。


5.soap协议解析

1)、SOAP 消息组成(soap的消息对象包括:)

所有的SOAP消息都使用XML编码,一条SOAP消息就是一个普通的XML文档,文档包括下列元素:

A、Envelope(信封)元素,必选,可把此XML文档标识为一条SOAP消息。

B、Header(报头)元素,可选,包含头部信息(包含了使消息在到达最终目的地之前,能够被路由到一个或多个中间节点的信息,可能会定义认证信息、事务信息、本地信息)。

C、Body(主体)元素,必选,包含所有的调用和响应信息。

D、Fault元素,位于Body内,可选,提供有关处理此消息所发生错误的信息。

E、Attachment(附件)元素,可选,可通过添加一个或多个附件扩展SOAP消息。

SOAP协议的深度解析

所有以上的元素均被声明于针对SOAP封装的默认命名空间中:http://www.w3.org/2001/12/soap-envelope

以及针对 SOAP 编码和数据类型的默认命名空间:http://www.w3.org/2001/12/soap-encoding

6.soap附件:

SOAP消息可以包含XML格式的主SOAP信封,以及包含ASCII或二进制等任何数据格式的SOAP附件。如果SOAP消息包含附件,那么SOAP消息将是一个MIME编码的消息,包含SOAP内容和一个或多个其他类型的附件。因此SOAP消息实际上分为以下两种类型:

A、仅包含XML内容的消息

B、MIME编码的消息,包含初始的XML有效内容以及任何数量的附件。附件可以是任何其他类型的数据。

MIME:Multi-purpose Internet Mail Extensions多用途Internet邮件扩展,是一组技术规范,其目的是使用不同字符集来传递文本,也可以在计算机之间传递各种各样的多媒体数据】

 

7.soap消息绑定:

Web服务的有效负载通常包装在SOAP消息中,而SOAP消息结构由WSDL文档中的SOAP绑定定义确定。不同的调用方式和编码方式通过组合可以产生多种绑定样式,而每种样式的应用场景和对应的SOAP消息结构并不相同。如果没有正确的构造SOAP消息,则无法正确交换服务的有效负载。

SOAP Body提供了一种消息交换的机制,是SOAP消息的实际负载,可包含任意内容。SOAP消息体(SOAP Body)通过绑定服务调用方式(RPC或者Document)封装操作,绑定编码方式(Encoded或者Literal)序列化参数。SOAP消息的绑定样式由style、use和encodingStyle三个属性共同设置。style属性指定服务的调用方式,是采用RPC方式还是Document方式;use属性指定消息的编码方式,是采用Encoded方式还是采用Literal方式;而encodingStyle属性指定具体编码规则,例如可以指定SOAP编码规则、XML Schema编码规则等等,通常情况下都是采用XML Schema。

8.soap的调用过程:

Web service一般就是用SOAP协议通过HTTP来调用它,其实他就是一个WSDL文档,客户都可以阅读WSDL文档来用这个Web service。客户根据WSDL描述文档,会生成一个SOAP请求消息。Web service都是放在Web服务器 (如IIS) 后面的,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器来。Web服务器再把这些请求转发给Web service请求处理器。请求处理器的作用在于,解析收到的SOAP请求,调用Web service,然后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。

SOAP简单的理解,就是这样的一个开放协议SOAP=RPC+HTTP+XML:采用HTTP作为底层通讯协议;RPC作为远程调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在INTERNET进行通讯交互。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158700.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python绘图Turtle库详解[通俗易懂]

    Python绘图Turtle库详解[通俗易懂]Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。turtle绘图的基础知识:1.画布(canvas)画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。…

    2022年6月9日
    59
  • Java 数组在内存中的存储 数组的常见操作

    Java 数组在内存中的存储 数组的常见操作Java 数组在内存中的存储数组的常见操作

    2025年6月29日
    2
  • 群晖docker mysql_Watchtower – 群晖自动更新 Docker 映像与容器

    群晖docker mysql_Watchtower – 群晖自动更新 Docker 映像与容器群晖的Docker功能非常丰富,不过也有不完美的地方,映像和容器更新比较麻烦,比如我的Docker容器运行了十几个,如果通过手动更新非常繁琐,容器还需要重新配置本文就介绍如何通过watchtower全自动更新Docker映像,并保留原始配置重新运行容器。watchtower是一个可以监控正在运行的容器镜像是否有更新的工具,当本地镜像与远端镜像有差异的时候,可以自动使用当前容器的运行参数以新镜像重…

    2025年6月13日
    3
  • 条件运算符的嵌套使用方法_三元运算符的嵌套

    条件运算符的嵌套使用方法_三元运算符的嵌套intx=5,y=6,a=1,b=2;intz=0;z=x>y?x:a>b?a:b;条件运算符的执行顺序是从右向左。z=x>y?x:(a>b?a:b);先执行括号里面的。   

    2022年10月2日
    2
  • 用好SVN与Git,版本管理都不是问题

    用好SVN与Git,版本管理都不是问题

    2021年11月6日
    281
  • 企业怎么选择国产Web应用防火墙?

    企业怎么选择国产Web应用防火墙?企业怎么选择国产Web应用防火墙?2005年前后,Web应用防火墙(WAF)进入了IT安全领域,最早提供这类产品的供应商是几家新兴公司,如Perfecto、KaVaDo和NetContinuum。工作原理相当简单:随着攻击范围向IP堆栈的上层移动,瞄上针对特定应用的安全漏洞,这时势必需要开发旨在识别和预防这些攻击的产品。虽然网络防火墙在阻止较低层攻击方面很有效,但并不擅长解开IP数据包层,以分析较高层协议;这就意味着,网络防火墙缺少应用感知功能,而要关闭自定义Web应用中的漏洞窗口,就需要这种功能。但是

    2022年5月5日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号