一、本质认知:协议族 vs 传输协议
Web Service 的本质:标准化的消息交换协议族
Web Service 不是单一技术,而是一套完整的、标准化的分布式计算解决方案。它的核心思想是:通过统一的封装,让不同语言、不同平台的系统能够互相调用,就像本地方法一样。
其技术栈包含:
- SOAP(Simple Object Access Protocol):消息封装格式,基于 XML
- WSDL(Web Service Description Language):服务描述,定义接口契约
- UDDI(Universal Description Discovery Integration):服务注册与发现
哲学内核:强类型、契约驱动、严格约束。它假设"通信双方需要预先约定一切,以确保互操作性"。
HTTP 接口的本质:轻量级的资源访问协议
HTTP 接口(特别是 RESTful API)的本质是对 HTTP 协议的直接应用,强调的是资源的表述性状态转移。
哲学内核:无状态、资源导向、约定优于配置。它假设"HTTP 本身已经足够强大,无需额外封装"。
二、性质差异:重型 vs 轻型
| 维度 | Web Service (SOAP) | HTTP 接口 (REST) |
|---|---|---|
| 消息格式 | XML(强结构、冗长) | JSON/XML/纯文本(灵活、简洁) |
| 协议栈 | SOAP over HTTP/TCP/SMTP 等 | HTTP 原生 |
| 契约约束 | 强制 WSDL,编译时验证 | 可选 OpenAPI/Swagger,运行时协商 |
| 状态管理 | 可支持有状态(WS-* 扩展) | 无状态(Stateless) |
| 传输依赖 | 可脱离 HTTP(支持 SMTP、JMS 等) | 必须基于 HTTP |
| 安全性 | 内置 WS-Security(消息级加密) | 依赖 HTTPS/TLS(传输级加密) |
| 错误处理 | 标准化的 SOAP Fault | HTTP 状态码 + 自定义错误体 |
三、核心区别:四个维度
1. 耦合度与灵活性
- Web Service:高耦合。WSDL 契约一旦发布,客户端与服务端强绑定。修改接口意味着更新 WSDL 并重新生成客户端代码。
- HTTP 接口:低耦合。客户端只需理解 URL 和数据格式,服务端可迭代演进而不破坏兼容性。
2. 性能开销
- Web Service:XML 解析开销大,消息体冗余,传输效率低。
- HTTP 接口:JSON 解析快,消息体紧凑,性能优异。

