我一直看到SOAP是“重量级”而REST是“轻量级”。在什么参数上,我们告诉REST比SOAP更轻量级?
我们之前在我们公司使用IFW模型Web服务。但我们的管理层告诉我们开发REST中的所有新API。我们是我公司的后端服务提供商。
REST如何对我们最有用?
“轻量级”在上下文中意味着什么?
这个问题似乎是重复,但不理解使用的术语。
答案 0 :(得分:8)
REST为您提供了一个不含会话窗口的系统。它不跟踪你,它不关心你。您所做的就是发送一个请求,其中包含一些id,以确认您可以创建它。它可能会返回一个HTTP状态代码,它可能会返回一些正文,但最终,一旦请求完成,您就会被遗忘。
从某种意义上讲,SOAP很重要,它描述了远程系统和客户端之间的“契约”。为了让您的客户端有效地进行通信,它必须实现其架构......这是SOAP框架。它描述了您可以进行的调用以及您可以预期的对象。SOAP很重的原因是序列化。在每个SOAP请求中,您通常会序列化一个java对象,通过HTTP发送它并获得一个序列化响应,该响应通过反射反序列化为一个对象...这很重。这也意味着如果端点改变了它们的工作方式,则必须更改合同。您不必使用REST执行此操作。
使用SOAP,您会遇到多线程问题。
快速回答..
它们可能意味着REST服务是“轻量级”的,因为您不需要向客户端发布更改。您只需更改逻辑,保留URL并且响应应保持不变。
使用SOAP ...如果向对象添加了新字段,则必须让客户端实现新模式。 SOAP很老了。
答案 1 :(得分:2)
REST是轻量级的,因为它依赖于HTTP标准来完成它的工作。很高兴能够快速启动并运行有用的Web服务。如果您不需要严格的API定义,那么这就是您的选择。大多数Web服务都属于这一类。您可以对API进行版本更新,以便API的更新不会破坏使用旧版本的人(只要他们指定版本)。 REST本质上需要HTTP,并且与格式无关,因此您可以使用XML,JSON,HTML等。
但是SOAP会将结构包装成SOAP信封(遵循XML标准)。 SOAP信封的复杂性基于使用的消息版本和其他Web服务协议。 SOAP通常与传输无关,这意味着您不一定需要使用HTTP。
可以指出,SOAP是为分布式计算环境而设计的,其中REST是为点对点环境而设计的。
我想知道是否可以说虽然SOAP提供了更高的安全性,但基于REST的API在资源上更容易,更具可扩展性?作为一个例子,Twitter,Facebook,Google Drive,Blogger等都有基于REST的API,客户可以使用它们。
查看此link以获取有关SOAP和REST的比较。
答案 2 :(得分:0)
通常REST
通过将请求语义映射到底层HTTP协议来减小请求有效负载的大小和范围。例如,SOAP
通常会添加一个信封(具有不同的复杂性),它对请求和响应类型以及服务映射都使用WSDL
(合同)。 REST只会将POST, GET, etc用于带有一些HTTP编码参数的URL,因此缺少强制执行的合同。
答案 3 :(得分:0)
轻量级有几个方面。 SOAP只是XML,而REST允许您发送任何有效负载,例如JSON,它比XML更简洁,更简单。一般来说,处理JSON比使用XML需要更少的内存和更少的带宽。
在另一个层面上,使用SOAP通常将所有内容描述为服务。因此,您需要为每个动词和名词定义消息模式/结构,即“CreateOrder”。在REST中,您使用预定义的HTTP方法(如POST)并将名词/“资源”放在URI中,该URI使用HTTP级别上已有的构造 - 而不是在XML中重新构建它们。
然后需要付出努力来适应变化。 SOAP的一个小变化要求您重新定义模式,重新定义wsdl和处理版本。在休息时,在最好的世界中,有一定程度的动态编码到API(引用资源的链接等),以便可以实现一些更改并直接生效。
SOAP的所有重量级严格性当然都有一个合理的存在理由。与松散定义的REST API相比,两个实现对API的解释不太可能。 SOAP还允许您基于WSDL以各种语言实现框架代码。在一些复杂的场景中,这实际上几乎是使用SOAP的唯一有效方式。对象和序列化XML之间的编组和解组相当繁重,增加了SOAP的重要性。