Java Web Services: Up And Running, Second Edition
书的引用:
“目前,两种Web服务的区别在于 不尖锐, 因为通过HTTP提供的基于SOAP的服务可以被视为一种特殊情况 REST风格的服务;“
答案 0 :(得分:2)
如何?
我认为作者的陈述不正确。
根据维基百科:
SOAP可以构成Web服务协议栈的基础层, 提供Web服务可以使用的基本消息传递框架 建成。这个基于XML的协议由三部分组成:信封, 它定义了消息中的内容以及如何处理它,一组 用于表示应用程序定义的实例的编码规则 数据类型,以及表示过程调用和的约定 响应。 SOAP有三个主要特征:可扩展性 (安全性和WS路由是开发中的扩展之一), 中立性(SOAP可用于任何传输协议,如HTTP, SMTP,TCP或JMS)和独立性(SOAP允许任何编程 模型)。
正如您所看到的,在SOAP的这种描述中确实没有任何关于API调用的结构(url wise)必须遵守的任何意识形态立场。当然,soap使用XML,而XML可以拥有一个基本上可以作为API调用规则集的数据结构......很酷。
相比之下,我们有REST。
根据维基百科:
REST架构风格描述了以下六个约束 应用于架构,同时离开执行 个别组件可自由设计:
- 客户端 - 服务器:服务器不关心用户界面或用户状态,因此服务器可以更简单,更具可扩展性。
- 无状态:客户端 - 服务器通信受到请求之间没有客户端上下文存储在服务器上的限制。
- 可缓存:响应必须隐式或显式地将自身定义为可缓存,以防止客户端重用陈旧或不适当的数据以响应进一步的请求。
- 分层系统:客户端通常无法判断它是直接连接到终端服务器,还是沿途的中介。中间服务器可以通过启用负载平衡和提供共享缓存来提高系统可扩展性。
- 按需代码(可选):服务器可以通过传输可执行代码来临时扩展或自定义客户端的功能。
- 统一接口:下面讨论的客户端和服务器之间的统一接口简化和解耦了体系结构,使每个部分都能独立发展。 (即HTTP GET,POST,PUT,PATCH,DELETE)
在我看来,它不应该被描述为SOAP vs REST,它应该是RPC vs REST。 RPC是远程过程调用,这基本上意味着API的每个功能都有1个不同的API端点,依此类推。所以,REST可以使用RPC做的1 url 7. SOAP是RPC(对吧?)
是的,两者都是网络服务。
但是说RPC API是RESTful-ish因为它通过HTTP
传输几乎没有理由说它们是相似的...从上面的详细信息中,你可以看到REST采取了更多的意识形态方法关于服务的结构,转移,目的,可扩展性和状态,而SOAP并没有真正谈论这些事情,并且可能开发人员可以选择做或不做这些事情。
总之,我需要更多的背景来真正理解作者试图提出的观点。 RPC API可以类似于REST,如果你做它 RESTful 的东西......但这确实是间接的,不是吗?