Soap (simple Object Access Protocol)

本文介绍了SOAP协议的基本概念,详细解析了SOAP消息的XML格式,并通过一个请求股票价格的例子展示了SOAP的实际应用。

简单的说,soap是web应用之间进行信息传输的一种基于XML的信息格式,,一条soap消息就是一个XML文本,而且这个XML文本有基本的格式规定

soap消息格式

<SOAP-ENV:Envelope [属性] >
	<SOAP:HEADER>
	...
	</SOAP:HEADER>
	<SOAP:Body>
	</SOAP:Body>
</SOAP-ENV:Envelope>

举个例子

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nLength

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

  <soap:Body xmlns:m="http://www.example.org/stock">
    <m:GetStockPrice>
      <m:StockName>IBM</m:StockName>
    </m:GetStockPrice>
  </soap:Body>
  
</soap:Envelope>
### ONVIF 模块的软件架构提炼 根据 Web Service 的工作原理和 ONVIF 标准的实现需求,可以提炼出以下 **ONVIF 模块的软件架构**: --- #### **1. 客户端层 (Client Layer)** - **功能**:生成符合 ONVIF 规范的请求,解析服务端响应。 - **关键组件**: - **WSDL 解析器**:解析 ONVIF 的 WSDL 文件,生成客户端存根(Stub)代码。 - **SOAP 消息构造器**:根据 WSDL 定义的数据类型,构造 SOAP 请求的 `Body` 字段(如 `GetDeviceInformation`、`PTZControl` 等)。 - **HTTP 客户端**:封装 SOAP 消息为 HTTP POST 请求,发送到服务端。 #### **2. 通信层 (Transport Layer)** - **协议**:基于 HTTP/HTTPS 传输 SOAP 消息。 - **安全机制**:支持 WS-Security(如用户名/密码认证、TLS 加密)。 #### **3. 服务端层 (Server Layer)** - **功能**:处理 ONVIF 标准请求,返回设备能力或执行操作。 - **关键组件**: - **HTTP 服务**:接收客户端请求(如 Apache、Nginx 或嵌入式 Web 服务器)。 - **SOAP 处理器**: - 解析 SOAP 请求,验证 `Body` 字段是否符合 WSDL 定义的数据类型。 - 调用对应的 ONVIF 服务逻辑(如设备管理、视频流控制、PTZ 控制)。 - **服务实现**: - **设备服务**(如 `DeviceService`):实现 `GetCapabilities`、`GetDeviceInformation` 等接口。 - **媒体服务**(如 `MediaService`):实现视频流获取、编码配置等。 - **PTZ 服务**(如 `PTZService`):实现云台控制、预置位管理等。 #### **4. 设备抽象层 (Device Abstraction Layer)** - **功能**:将 ONVIF 标准接口映射到具体硬件或 SDK。 - **关键组件**: - **硬件驱动适配器**:转换 ONVIF 指令为摄像头硬件协议(如 RS-485 控制云台)。 - **视频流处理**:封装视频流为 ONVIF 支持的格式(如 RTSP、H.264/H.265)。 #### **5. 数据模型层 (Data Model)** - **ONVIF 核心数据类型**: - 设备信息(`DeviceInformation`)、能力集(`Capabilities`)、视频配置(`VideoSourceConfiguration`)等。 - **XML 绑定**:通过 XML Schema(XSD)定义 SOAP 消息的数据结构。 --- ### **架构流程图** ``` 客户端层 → [SOAP请求] → 通信层(HTTP/HTTPS) → 服务端层 → 设备抽象层 → 硬件 客户端层 ← [SOAP响应] ← 通信层(HTTP/HTTPS) ← 服务端层 ← 设备抽象层 ← 硬件 ``` ### **关键设计要点** 1. **WSDL 严格兼容**:SOAP 消息的 `Body` 字段必须与 WSDL 定义的 XML Schema 完全匹配。 2. **松耦合**:服务端通过 SOAP 处理器动态调用服务,无需绑定具体实现类。 3. **可扩展性**:新增 ONVIF 服务(如事件处理)只需扩展 WSDL 和服务实现。 --- ### **示例场景(PTZ 控制)** 1. 客户端根据 WSDL 生成 `AbsoluteMove` SOAP 请求,指定云台目标位置。 2. 服务端解析 SOAP 请求,调用 `PTZService` 的 `AbsoluteMove` 方法。 3. 设备抽象层将指令转换为硬件协议(如 Pelco-D),控制摄像头转动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值