2010-11-09 27 views
9

He revisado varios sitios y la única respuesta que proporcionan es: los servicios web tranquilos utilizan los propios métodos de Http (GET, POST, PUT, DELETE). Mientras que SOAP los servicios web basados ​​usan sus propios métodos personalizados ... - Los servicios web tranquilos tratan cada método de servicio como un recurso y le otorgan un URI ..cómo son los servicios web Restful mejores que los servicios web basados ​​en SOAP

Sin embargo, no entiendo el significado completo de estas respuestas .. En cuanto a por qué estas cosas demuestran ser una gran ventaja sobre los servicios web basados ​​en SOAP.

Se apreciará un ejemplo

+0

Posible duplicado: http://stackoverflow.com/questions/76595/soap-orrest – michid

+0

¿Tiene alguna idea? Tienes 4 muy buenas respuestas. – RPM1984

+0

@ RPM1984: Sí, supongo que iré con REST porque tiene URL distintas para diferentes servicios, lo que lo hace muy débilmente acoplado y también tiene un directorio como estructura de url (a diferencia de SOAP que tiene "www.somesite.com?query=something") que lo hace amigable para los motores de búsqueda. :) – Anand

Respuesta

10

RESTO adapta de forma natural a/de la nube de Web API, mientras que encaja de SOAP para los escenarios de computación distribuida.

El ancho de banda es el principal beneficio de REST, ya que no hay documento complejo para atravesar (es decir, XML, encabezados SOAP), que es extremadamente importante para las API web que funcionan bien. JSON es un estándar ampliamente reconocido y simple para el intercambio de datos, y es fácilmente leído por los navegadores y el código del cliente, por lo que la mayoría de las API RESTful (Yahoo es un buen ejemplo) ofrecen JSON.

no hablar resto está disponible para el objeto XMLHttpRequest, que a su vez, es crucial para AJAX-capacidad para la API de Web.

Y, por supuesto, la función de almacenamiento en caché de descanso no puede ser ignorada.Como REST se basa en HTTP, puede aprovechar muchas de las características semánticas de HTTP (y de la propia web), al utilizar encabezados en los paquetes HTTP (caducar) para habilitar el almacenamiento en caché por parte del navegador. Sin mencionar cosas como la compresión gzip para aumentar la eficiencia. En cuanto a rendimiento, REST realmente lo clava sobre SOAP.

En cuanto a SOAP, SOAP satisface las operaciones con estado. El estándar WS * (Seguridad, Transacciones, etc.) maneja este tipo de plomería, que es bastante común en escenarios distribuidos. Se puede hacer con REST, claro, pero entonces realmente no sería REST. SOAP es realmente bueno para definir contratos operativos entre el cliente y el servidor, lo cual es crucial en los escenarios distribuidos.

Así que mi opinión (y toda la cosa SOAP vs REST es muy dogmática), use SOAP para escenarios de computación distribuida, use REST para APIs Web.

+0

@ RPM1984: ¿Qué quiere decir con "la característica de cacheability de REST"? – Cratylus

+0

@ user384706 - porque REST se basa en HTTP, permite la adición de encabezados de caché (caduca) a las respuestas para que los navegadores puedan almacenarlos en caché. El paquete de respuesta * explícitamente * declara la cacheabilidad. Ahora bien, esto es ** caché de cliente **, que no debe confundirse con el almacenamiento en caché del servidor. Que una vez más por qué mi publicación principal es REST para Web, SOAP para Informática Distribuida. – RPM1984

+0

También editado por respuesta para agregar esa aclaración. – RPM1984

1

Las ventajas son tácticas: sin duda es posible hacer todo lo que se puede hacer con una en la otra, pero los servidores web estuvieron aquí antes que SOAP y son bastante sencillos de configurar, por lo que a menudo son más simples. Por ejemplo, la autenticación y tal a menudo pueden ser manejados por el servidor web, como puede redirigir y cargar el equilibrio y cosas. Los marcos SOAP normales en realidad no tienen todo como un conjunto completo de tales cosas, y pueden causar dolores de crecimiento.

4

El principal problema con SOAP es hinchazón. Cuanto más pueda hacer, menos podrá usar los valores predeterminados. Esto lleva a enormes descargas de WSDL incluso para métodos simples. A continuación, amplía los analizadores (los analizadores específicos son siempre más pequeños que los de propósito general), los mensajes (todo un fajo de XML en lugar de DELETE con un URI), los manejadores de errores (envía 20-30 KB de XML al servidor y responde con un mensaje de error de 50 KB, buena suerte para leer y entenderlo).

Ejemplo concreto: El código de Java para leer una lista de documentos a través de SOAP desde un servidor de SharePoint es tan grande que debe darle al compilador de Java 1GB de RAM para compilarlo.

Lo mismo con las necesidades de relax a pocas líneas de código. En el cliente, debe compilar una solicitud con GET list/some/url. Analizar eso en el servidor será menos esfuerzo que compilar WSDL incluso si tiene que escribir el código a mano.

+1

Por lo que parece, has tenido muy mala experiencia con un framework. Generalmente, SOAP requiere menos codificación manual para comenzar que REST, ya que los marcos generalmente automatizan una gran parte de la tubería. El tamaño del WSDL debe ser irrelevante para el rendimiento del tiempo de ejecución, ya que solo se utiliza para ayudar en la generación de proxy del lado del cliente. –

+1

Utilicé Axis. ¿Hay algo más en Java? Además, el tamaño del WSDL es relevante porque grandes WSDL == grandes solicitudes. –

2

Muchos han desaprobado los servicios web basados ​​en SOAP, debido a la complejidad adicional añadida por la capa SOAP, considerándolo como una sobrecarga indebida, proponiendo servicios web RESTful.
En las estructuras REST, el mensaje xml se encapsula directamente en la carga HTTP y no dentro de un sobre SOAP (igual que AJAX).
Eso reduce significativamente la sobrecarga de análisis.
Pero en casos reales a menudo es necesario enviar a servidor/cliente información adicional no relacionada con la carga útil del mensaje xml real.
Esto lleva a encontrar maneras de transferir la información a través del mensaje HTTP.
Dado que existe la necesidad de transferir dicha información, algunos han argumentado que los servicios basados ​​en SOAP facilitan las necesidades.

Cuestiones relacionadas