【问题标题】:What is the traditional counterpart of REST in systems using SOAP使用 SOAP 的系统中 REST 的传统对应物是什么
【发布时间】:2019-01-19 01:13:37
【问题描述】:
我多次听到 REST 与 SOAP 的比较,后者已被揭穿为苹果与梨的比较(例如,在 stackoverflow 上:SOAP vs REST (differences))
虽然它们确实是不同的东西,但这个有缺陷的比较告诉我的是,旧的 SOAP 系统将与某种架构风格并驾齐驱,人们错误地将其标记为 SOAP,因为它们是如此紧密耦合。
另外,如果 REST 是一种架构风格,那么它主要使用的通信协议是什么?
总结一下,
REST 之于 X 协议,就像 Y 架构风格之于 SOAP 协议一样。
X 和 Y 是什么?
【问题讨论】:
标签:
rest
api
soap
architecture
【解决方案1】:
它们都是解决类似架构问题的两种方法 - 服务之间的松散耦合。我们可以将发布/订阅消息传递、竞争消费者模式等添加到此列表中。在 SOAP 和 ReST 的情况下,它们通常连接 Web 服务,触发业务事务的 SOAP 带来了具体的实现指南,而用于 CRUD 操作的 ReST 只带来了一种模式。
关于第二点,ReST 通信通常是通过 HTTP 实现的,理论上它可以运行在其他通信协议上,尽管我不知道有任何主流协议。
【解决方案2】:
你是对的,它们是两种不同的网络协议,但它们有不同的用途。
REST 更现代,更易于理解和编程。 REST 服务通常会公开类似 URL 的 API。请求在 HTTP 请求中传递,而有效负载通常作为 JASON 结构传递。许多(如果不是大多数)公共服务使用 REST。
REST 的诞生是为了以一种比 SOAP 更简单的方式访问 Web 服务。
SOAP 是一种较旧且更复杂的协议,专为广泛的安全服务而设计。它更可靠、更安全——例如,如果消息丢失,它的内部协议可以重试,并且它还包括对安全性和数据库事务的强大支持。 SOAP 可以使用 HTTP、SMTP、TCP、UDP 协议进行操作,消息体采用 XML 编码。
根据应用程序,REST 或 SOAP 仍然可能是正确的选择。他们提出了自己的问题,并在特定情况下有自己的优势。然而,在基于 Web 的公共服务不断发展的世界中,REST 是迄今为止最常见的选择。
所以真的没有正确的回复:
REST 对于 X 协议就像 Y 架构风格对于 SOAP 协议一样。
X 和 Y 是什么?
你可能会说:
REST 将直接的数据交付服务作为
SOAP 是为了保护事务性服务(也可能是在服务器上更新复杂状态的地方)。
虽然我相信很多人会想要改进这一点:-)