¿Por qué se utilizarían REST en lugar de servicios basados ​​en SOAP?[cerrado]

StackOverflow https://stackoverflow.com/questions/90451

  •  01-07-2019
  •  | 
  •  

Pregunta

Asistí a una demostración interesante sobre REST hoy, sin embargo, no pude pensar en una sola razón (ni se presentó ninguna) por la cual REST es de alguna manera mejor o más simple de usar e implementar que una pila de servicios basada en SOAP.

¿Cuáles son algunas de las razones por las que alguien en el "mundo real" utiliza REST en lugar de los servicios basados ​​en SOAP?

¿Fue útil?

Solución

Menos gastos generales (sin sobre SOAP para envolver cada llamada)

Menos duplicación (HTTP ya representa operaciones como DELETE, PUT, GET, etc.que de otro modo tendrían que estar representados en un sobre SOAP).

Más estandarizadas: las operaciones HTTP se comprenden bien y funcionan de manera consistente.Algunas implementaciones SOAP pueden resultar complicadas.

Más legible y comprobable para humanos (más difícil de probar SOAP con solo un navegador).

No es necesario usar XML (bueno, tampoco es necesario para SOAP, pero no tiene sentido ya que ya estás analizando el sobre).

Las bibliotecas han hecho que SOAP sea (más o menos) fácil.Pero estás abstrayendo mucha redundancia subyacente, como he señalado.Sí, en teoría, SOAP puede pasar por otros transportes para evitar estar encima de una capa haciendo cosas similares, pero en realidad casi todo el trabajo SOAP que harás será a través de HTTP.

Otros consejos

Sosegado Los servicios son mucho más simples de consumir que JABÓN servicios basados ​​(regulares).La razón de esto es que REST se basa en solicitudes HTTP normales, lo que permite inferir la intención a partir del tipo de solicitud que se realiza (GET = recuperar, POST = escribir, DELETE = eliminar, etc.) y no tiene ningún estado.Por otro lado, se podría argumentar que es menos flexible ya que elimina el concepto de sobre de mensaje que contiene el contexto de solicitud.

En mi experiencia, se ha preferido SOAP para servicios dentro de la empresa y se ha preferido REST para servicios que están expuestos como API públicas.

Con herramientas como WCF en el framework .NET es muy trivial implementar un servicio como REST o SOAP.

Algunas lecturas relevantes:

Asumiré que cuando dice "servicios web" se refiere a SOAP y al conjunto de estándares WS-*.(De lo contrario, podría argumentar que los servicios REST son "servicios web".)

El argumento canónico es que los servicios REST se acercan más al diseño de la web, es decir, al diseño de HTTP y la infraestructura asociada.Por tanto, el uso de un servicio REST será más compatible con las herramientas y técnicas web existentes.

Por supuesto, una vez que profundiza en los detalles, descubre que ambos enfoques tienen puntos fuertes en diferentes escenarios.¿Son esos detalles los que te interesan?

Los gastos generales no son tan importantes como una buena arquitectura.

REST no es un protocolo, es una arquitectura que fomenta un buen diseño escalable.A menudo se elige porque demasiada libertad en RPC puede conducir fácilmente a un diseño deficiente.

La otra razón es el costo predecible de los protocolos RESTful sobre HTTP porque pueden aprovechar las tecnologías existentes (principalmente servidores proxy).El costo inicial de RPC es bastante bajo, pero tiende a aumentar significativamente con la intensificación de la carga.

REST es independiente de la implementación y mucho más transparente, lo que lo hace ideal para API públicas, especialmente para sitios web grandes como Flickr, Amazon o Digg que utilizan sus API como herramientas de marketing y realmente quieren que la gente consuma sus datos.Ellos no Quiero ayudar a miles de desarrolladores novatos que están tratando de depurar la biblioteca SOAP con errores de su lenguaje de programación preferido.

Frente a SOAP y WSDL, que son mejores para aplicaciones internas, donde tienes bibliotecas directas y personas conocidas y con pistas en ambos extremos.(Y tal vez no tenga que preocuparse por cosas como el equilibrio de carga a escala de Internet, el almacenamiento en caché HTTP, etc.) Luego obtendrá API que están autodocumentadas, preservan tipos, etc.con cero trabajo.

Tengo que leer el libro más excelente de Roy Fielding. disertación en el tema.Presenta un caso excelente y definitivamente fue FORMA adelantado a su tiempo cuando lo escribió (2000).

El blog de Steve Vinoski. y su últimos artículos Definitivamente vale la pena leerlos.Es un ex gurú de CORBA, que escribió probablemente el mejor libro sobre el tema con Michi Henning, "Programación CORBA® Avanzada con C++".Sin embargo, desde entonces ha visto el error de sus métodos cliente/servidor y ahora confía en REST.

REST permite que sus operaciones no mutantes (que generalmente usan el verbo GET) sean almacenado en caché.Es decir, almacenado en caché por el cliente y/o almacenado en caché por servidores proxy.¡Esto puede ser una gran victoria!

REST es básicamente solo una forma de implementar servicios web.Es solo una forma de utilizar HTTP correctamente para consultar los servicios web que intenta acceder.

http://www.xfront.com/REST-Web-Services.html http://en.wikipedia.org/wiki/Representational_State_Transfer

Es súper simple y delgado.Podrías hacerlo con el navegador a través del verbo http:CONSEGUIR.No he encontrado un navegador que pueda realizar manualmente una solicitud POST http genérica fácilmente

Aquí hay un punto de datos:Amazon ofrece sus API en formato REST y SOAP y el 85% del uso es REST.

REST es más fácil de implementar, más fácil de entender y de mayor rendimiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top