简单对象访问协议(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
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
```
回应
```XML
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
```
特点
- 可扩展性:SOAP允许客户、服务器和协议本身不断发展,而不影响现有应用程序。
- 简单性:SOAP实现了客户端发送请求、服务器返回结果的简单交互模式,消息以XML封装,符合HTTP协议要求。
- 中立性:SOAP不受制于特定的平台、操作系统、目标模型或编程语言,传输和语言绑定的选择由具体实现决定。
- 与编程语言无关:SOAP可以通过任何语言实现,只需确保客户端发送正确的SOAP请求即可。
- 与平台无关:SOAP能够在任何操作系统环境中无缝运行。
参考资料简单对象访问协议 — SOAP.广州新悦网络设备有限公司.2024-08-16
xml数据库是什么意思.Worktile.2024-08-16
什么是HTTP协议.MBA智库.2024-08-16