web Service介绍
概念
一种基于网络通信协议和标准化数据格式的通用技术,用于实现**不同系统(可能跨语言、跨平台、跨网络)**之间的 远程数据交互和功能调用。
核心目标:打破系统壁垒,让分散在不同环境的应用程序能够像“调用本地函数”一样通过网络调用远程系统的功能或 获取数据。
本质
Web Service 不是具体的产品。而是一种技术规范与通信标准的集合。本质是:
- 通过标准化的网络协议(如HTTP、HTTPS)传输数据。
- 使用标准化的数据格式(如XML、JSON)封装请求与响应。
- 遵循统一的接口描述规范(如WSDL),让调用方明确”如何调用“远程服务。
Web Servcie 为不同系统之间 规定了一套调用规范。 无论两端的 系统使用什么语言开发,只要遵循web Service规范,就能实现数据互通。
核心技术组件(三大基石)
- SOAP(Simple Object Access Protocol)
- 定位:WebService的”通信协议“,定义了数据如何在网络中传输。
- 本质:一种基于XML的消息格式规范,规定了请求请求必须/响应 数据的结构(如必须包含(信封)、
(头,可选,用于身份认证、日志等元数据)、(体,核心业务数据)三个标签) - 传输方式:默认通过HTTP传输(也支持SMTP、TCP等),但数据本身是XML格式,因此具有”跨协议。跨语言“的特性。
示例:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><AuthToken>abc123xyz</AuthToken> <!-- 身份认证信息 --></soap:Header><soap:Body><GetUserRequest xmlns="http://example.com/user-service"><UserId>1001</UserId> <!-- 业务参数 --></GetUserRequest></soap:Body>
</soap:Envelope>
- WSDL(Web Service Description Language):
- 定位:WebService的 "接口说明书“,定义了”服务有哪些功能,如何调用,参数格式是。
- 本质:一种基于XML的文档,完整描述了服务的元信息,包含:
- 服务的访问地址
- 支持的方法
- 方法的输入参数 和 输出响应格式
- 数据类型定义(types,如用户ID是字符串还是数字)。
- 作用:调用方无需手动编写请求格式,可通过WSDL自动生成”客户端调用代码“(如Java通过wsimport工具生成调用类)。降低集成成本。
- UDDI(Universal Description,Discover,and Integration)
- 定位:web Service的 “服务注册中心”,类似Nacos,用于存储和查询可用的WebService。
- 功能:提供者将WSDL地址注册到UDDI中,调用方通过UDDI查询需要的 服务在哪里,实现服务的动态发现。
较少使用,被更轻量的方案替代(如Restful的swagger、微服务的Nacos)。
web Service分类
根据数据传输格式和协议的不同,web。 Service主要分为两类:
类型 | 核心协议/格式 | 特点 | 适用场景 |
---|---|---|---|
SOAP web Service | SOAP(XML)+HTTP | 规范严格,支持复杂交互(事务、安全)、跨语言能力强 | 企业级核心系统,需高可靠性、标准化接口. |
RESTFul Web Service | HTTP+JSON/XML|轻量级、无严格规范、基于HTTP方法(GET/POST/…) | 互联网应用(如APP后端API、开放平台),追求简洁、高性能、易扩展 |
优势
- 跨语言/平台:基于XML/JSON 和HTTP,无论调用方是 何种语言,都能兼容。
- 标准化:SOAP/WSDL定义了严格的规范,避免“各自定义规范”,降低跨团队 集成的成本。
- 松耦合:服务提供者和调用方 仅通过接口交互。内部实现变更不影响对方。
- 安全性支持:SOAP 可通过 WS-Security 规范实现身份认证、数据加密、签名等安全功能,适合敏感数据传输(如金融、医疗)。
局限性
性能开销大:SOAP 基于 XML 格式,数据体积大、解析速度慢;且协议规范复杂,额外元数据(如 SOAP 头)增加传输成本,不适合高并发、低延迟场景(如秒杀系统)。
开发复杂度高:需维护 WSDL 文档,客户端需生成调用代码,相比 RESTful API(直接通过 HTTP 传 JSON)更繁琐。
灵活性不足:SOAP 规范严格,接口变更需同步更新 WSDL,不适合快速迭代的互联网产品;而 RESTful API 可灵活调整参数和响应格式。
与新技术的关系(vs RESTful API、RPC)
技术对比 | Web Service(SOAP) | RESTful API | RPC(如 Dubbo、gRPC) |
---|---|---|---|
核心协议 / 格式 | SOAP(XML)+ HTTP | HTTP + JSON/XML | 私有协议(如 Dubbo)/HTTP/2 + Protobuf |
跨语言能力 | 强(标准化) | 强(JSON/HTTP 通用) | 中等(gRPC 跨语言,Dubbo 偏 Java) |
性能 | 低(XML 解析慢、体积大) | 中(JSON 解析快、轻量) | 高(二进制协议 + 高效序列化) |
安全性 | 强(支持 WS-Security) | 弱(需额外实现 OAuth、HTTPS) | 中(需自定义安全机制) |
适用场景 | 企业级跨系统、敏感数据传输 | 互联网 APP / 开放平台 API | 微服务内部高并发调用 |
注:WebService 与RPC作用相同,RPC使用场景涵盖web Service。