1. 简单百科
  2. 简单对象访问协议

简单对象访问协议

简单对象访问协议(SOAP,原为Simple Object Access Protocol的首字母缩写)是交换数据的一种协议规范,使用在计算机网络Web服务(web service)中,交换带结构的信息。SOAP为了简化网页服务器(Web Server)从XML数据库中提取资料时,节省去格式化页面时间,以及不同应用程序之间按照HTTP通信协议,遵从XML执行资料互换,使其抽象于语言实现、平台和硬件。此标准由IBM、微软、UserLand和DevelopMentor在1998年共同提出,并得到IBM、莲花(Lotus)、康柏电脑(Compaq)等公司的支持,于2000年提交给万维网联盟(World Wide Web Consortium,W3C),目前SOAP 1.1版是业界共同的标准,属于第二代的XML协定(第一代具主要代表性的技术为XMLRPC以及WDDX)。

历史沿革

SOAP最初代表“Simple Object Access Protocol”,但在标准1.2版发布后,这一缩写不再使用,以避免与面向服务架构(Service-Oriented 建筑,SOA)产生混淆。SOAP由Dave Winer、Don Box、Bob Atkinson、Mohsen Al-Ghosein等人于1998年设计,起初仅作为一种对象访问协议。后来,SOAP规范由万维网联盟XML工作组负责维护。最新版本SOAP 1.2版在2003年6月24日成为W3C的推荐版本。

工作原理

SOAP通过因特网应用层协议作为其传输协议,通常使用HTTP协议进行传输,但也支持其他协议如SMTP。SOAP的消息格式采用XML编码,确保了跨平台和跨语言的兼容性。SOAP的核心技术包括HTTP和XML,前者用于实现SOAP的RPC风格传输,后者作为其编码模式。SOAP能够很好地适应中间介质和层次化的体系结构,同时也保持了简单易用的特点。

SOAP消息结构

SOAP消息由若干构建模块组成,包括必需的Envelope元素、可选的Header元素、必需的Body元素以及可选的Fault元素。这些元素构成了一个完整的SOAP消息,其中Body元素包含所有调用和响应信息,而Fault元素提供有关处理消息过程中发生的错误信息。SOAP消息必须遵守特定的语法规则,包括使用XML编码、指定SOAP Envelope和Encoding命名空间、禁止包含DTD引用和XML处理指令。

SOAP消息示例

请求

```xml

\u003csoapenv:Envelope

xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"\u003e

\u003csoapenv:Body\u003e

\u003creq:echo xmlns:req="http://localhost:8080/wxyc/login.do"\u003e

\u003creq:category\u003eclassifieds\u003c/req:category\u003e

\u003c/req:echo\u003e

\u003c/soapenv:Body\u003e

\u003c/soapenv:Envelope\u003e

```

回应

```XML

\u003csoapenv:Envelope

xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"\u003e

\u003csoapenv:Header\u003e

\u003cwsa:ReplyTo\u003e

\u003cwsa:Address\u003ehttp://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous\u003c/wsa:Address\u003e

\u003c/wsa:ReplyTo\u003e

\u003cwsa:From\u003e

\u003cwsa:Address\u003ehttp://localhost:8080/axis2/services/MyService\u003c/wsa:Address\u003e

\u003c/wsa:From\u003e

\u003cwsa:MessageID\u003eECE5B3F187F29D28BC11433905662036\u003c/wsa:MessageID\u003e

\u003c/soapenv:Header\u003e

\u003csoapenv:Body\u003e

\u003creq:echo xmlns:req="http://localhost:8080/axis2/services/MyService/"\u003e

\u003creq:category\u003eclassifieds\u003c/req:category\u003e

\u003c/req:echo\u003e

\u003c/soapenv:Body\u003e

\u003c/soapenv:Envelope\u003e

```

特点

- 可扩展性:SOAP允许客户、服务器和协议本身不断发展,而不影响现有应用程序。

- 简单性:SOAP实现了客户端发送请求、服务器返回结果的简单交互模式,消息以XML封装,符合HTTP协议要求。

- 中立性:SOAP不受制于特定的平台、操作系统、目标模型或编程语言,传输和语言绑定的选择由具体实现决定。

- 与编程语言无关:SOAP可以通过任何语言实现,只需确保客户端发送正确的SOAP请求即可。

- 与平台无关:SOAP能够在任何操作系统环境中无缝运行。

参考资料

简单对象访问协议 — SOAP.广州新悦网络设备有限公司.2024-08-16

xml数据库是什么意思.Worktile.2024-08-16

什么是HTTP协议.MBA智库.2024-08-16