saber - REST vs. RPC en PHP
soap rest difference (3)
Hay tres estilos diferentes de servicios:
- API de RPC : el cliente envía un procedimiento y parámetros al servicio y el servicio es responsable de ejecutar el comando y devolver un resultado.
- API de mensaje (API de documento) : el cliente envía DOM (elementos), que normalmente son estructuras más complejas que las llamadas de API RPC, porque tienden a no implicar operaciones directamente.
- API de recursos : se usa para acceder a recursos (tuplas de bases de datos, archivos, imágenes, etc.). En general, también debería proporcionar una buena negociación del tipo de medio.
SOAP y REST son una compilación de estándares del W3C , y la diferencia principal es que SOAP usa HTTP, SMTP y otros como protocolos de transporte y REST lo usa como protocolo de aplicación, como también debe ser compatible (GET, PUT, PUSH, DELETE y POST ) SOAP también implica el uso de XML y REST podría usar cualquier tipo de datos (JSON, XML, HTTP, etc.). Además, una de las principales ventajas de SOAP es el Descriptor de servicio (archivo WSDL), que brinda la posibilidad de autogeneración de Service Connector (proxy) al cliente.
No hay una bala de plata ; el tipo y la arquitectura de un servicio web dependen de los requisitos reales del cliente y la tecnología.
Para obtener una idea general sobre el tema, consulte uno de los libros de firmas de Martin Fowler - Service Design Patterns
Estoy construyendo mi propio sitio web Ajax, y estoy contemplando entre REST y RPC.
Si mi servidor admite Servlets, simplemente instalo perseverar y terminar el problema, pero mi servidor no admite Servlets.
RPC es más simple de codificar (IMO) y se puede escribir en PHP fácilmente. Todo lo que necesito es un ejecutador de consulta de base de datos. Estoy usando Dojo Toolkit y JSON.
¿Por qué debería elegir REST sobre RPC o RPC sobre REST?
La mejor manera de entenderlo es leer la disertación de Roy T. Fielding sobre ella, o artículos relevantes en su blog donde discute las diferencias entre puro REST y simplemente arquitecturas RPC.
Otra cosa a tener en cuenta es que el artículo de Wikipedia sobre REST está en pésima condición y el mismo Fielding, el "inventor" de REST, sugiere que el artículo es inexacto.
Lo más importante que las personas extrañan con REST es la capacidad de descubrimiento: los recursos deben incluir URI para otros recursos relacionados dentro de su hipertexto, en lugar de basarse en las convenciones de nomenclatura de URI, que están fuera de banda y no están estandarizadas.
Un gran problema con las implementaciones populares de RPC como SOAP o XML-RPC es que usan HTTP debajo de su propia arquitectura propietaria, en lugar de aprovechar todas las diferentes propiedades de HTTP como PUT, GET, DELETE, etc. Esto no se ajusta al pila web tradicional también: un servidor de caché en el medio no funciona, por ejemplo, sin conocer el significado de los contenidos de la llamada RPC.
Esta es una introducción incompleta a REST y RPC, pero creo que he resaltado algunos de los puntos importantes que a menudo se pasan por alto. Tenga cuidado, ya que hay MUCHA información incorrecta en REST.
Dicho esto, REST no es para todo. Es una arquitectura, por lo que es bastante flexible cómo puede implementarlo. Pero si no tiene sentido acceder a las cosas principalmente como recursos, entonces REST puede no ajustarse, o puede que solo se ajuste a partes de su aplicación, lo cual está bien.
Uhm ... para decirlo de manera simple, ambos son modelos muy abstractos ... tan abstractos, que ocurren naturalmente en todas partes ...
REST es la idea de tener recursos direccionados con un identificador global (el URI en el caso de HTTP) al que se accede de forma CRUD (usando POST , GET , PUT y DELETE en el caso de HTTP ... bueno, al menos eso es la idea)...
RPC es la idea en la que se llama a un procedimiento en una máquina diferente, se pasan algunos parámetros y se toma un valor de retorno ...
Hay una buena comparación corta en Wikipedia
Persevere crea un servicio que permite ambos (de una manera muy elegante, sin dudas) ... es RESTful (aunque no solo usa las características HTTP para lograr esto) y expone una interfaz RPC ...
Al final, debe ver lo que su aplicación necesita hacer ... como la mayoría de las personas, probablemente terminará con una API RPC (ya sea basada en XML o JSON o lo que sea), que incluye una capa de transporte para una parcialmente RESTful subsistema ... esto es, porque tener RESTfulnes, significa flexibilidad ... si el cliente puede recorrer más o menos libremente los datos en el servidor (a través de un conjunto de métodos simples CRUD), no depende de una limitada ( específico del problema) conjunto de métodos expuestos a través de la API, y usted puede cambiar la lógica de cliente hacia el cliente ...