无需二次开发,SOAP-to-REST 简化企业用户的业务迁移和整合

本文介绍了 SOAP 和 REST 的概念,探讨了传统的 SOAP-to-REST 代理实现方式及其开发成本。重点阐述了 APISIX 如何提供无代码自动转换功能,动态配置以及其实现机制,帮助企业轻松实现业务迁移和整合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇文章分析了 SOAP-to-REST 的多种实现方式,并介绍如何使用 APISIX 做零代码代理。

作者罗锦华,API7.ai 技术专家/技术工程师,开源项目 pgcat,lua-resty-ffi,lua-resty-inspect 的作者。

原文链接

1. 什么是 Web Service

Web Service 由万维网联盟 (W3C) 定义为一种软件系统,旨在支持通过网络进行可互操作的计算机间交互。

Web Service 完成特定任务或任务集,并且由名称为 Web Service 描述语言 (WSDL) 的标准 XML 表示法中的服务描述进行描述。服务描述提供了与服务交互必需的所有详细信息,包括消息格式(用于详细说明操作)、传输协议和位置。

其他系统使用 SOAP 消息与 Web Service 进行交互,通常是通过将 HTTP 与 XML 序列化和其他 Web 相关标准一起使用。

Web Service 的架构图(注意现实中 Service broker 是可选的):

Web Services architecture

图片来源(遵循 CC 3.0 BY-SA 版权协议): https://en.wikipedia.org/wiki/Web_service

WSDL 接口隐藏服务实现方式的详细信息,这样服务的使用便独立于实现服务的硬件或软件平台,以及编写服务所使用的编程语言。

基于 Web Service 的应用程序是松耦合、面向组件和跨技术的实现。 Web Service 可以单独使用,也可以与其他 Web Service 一起用于执行复杂的聚集或业务事务。

Web Service 是 Service-oriented architecture (SOA) 的实现单元,SOA 是用来替换单体系统的一种设计方法,也就是说,一个庞大的系统可以拆分为多个 Web Service,然后组合起来对外作为一个大的黑盒提供业务逻辑。流行的基于容器的微服务就是 Web Service 最新替代品,但是很多旧系统都已经基于 Web Service 来实现和运作,所以虽然技术日新月异,兼容这些系统也是一个刚性需求。

WSDL (Web Services Description Language)

WSDL 是用于描述 Web Service 的一种 XML 表示法。 WSDL 定义告诉客户如何编写 Web Service 请求,并且描述了由 Web Service 提供程序提供的接口。

WSDL 定义划分为多个单独部分,分别指定 Web Service 的逻辑接口和物理详细信息。物理详细信息既包括诸如 HTTP 端口号等端点信息,还包括指定如何表示 SOAP 有效内容和使用哪种传输方法的绑定信息。

Representation of concepts defined by WSDL 1.1 and WSDL 2.0 documents.

图片来源(遵循 CC 3.0 BY-SA 版权协议): https://en.wikipedia.org/wiki/Web_Services_Description_Language

  • 一个 WSDL 文件可以包含多个 service
  • 一个 service 可以包含多个 port
  • 一个 port 定义了 URL 地址(每个 port 都可能不同),可以包含多个 operation
  • 每个 operation 包含 input type 和 output type
  • type 定义了消息结构:消息由哪些字段组成,每个字段的类型(可嵌套),以及字段个数约束

1.1 什么是 SOAP

SOAP 是在 Web Service 交互中使用的 XML 消息格式。 SOAP 消息通常通过 HTTP 或 JMS 发送,但也可以使用其他传输协议。 WSDL 定义描述了特定 Web Service 中的 SOAP 使用。

常用的 SOAP 有两个版本:SOAP 1.1 和 SOAP 1.2。

SOAP structure

图片来源(遵循 CC 3.0 BY-SA 版权协议): https://en.wikipedia.org/wiki/SOAP

SOAP 消息包含以下部分:

  • Header 元信息,一般为空
  • Body
    • WSDL 里面定义的消息类型
    • 对于响应类型,除了成功响应,还有错误消息,它也是结构化的

例子:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header></SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <ns2:getCountryResponse xmlns:ns2="http://spring.io/guides/gs-producing-web-service">
      <ns2:country>
        <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

API7.ai 技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值