Diferencia entre servicios web OData y REST


Mientras miraba en algunos servicios web, me encontré con esta "nueva" tecnología que Microsoft está llamando OData. Leyendo su descripción dentro de las preguntas frecuentes sobre qué es OData, estoy teniendo dificultades para distinguir OData de los servicios web REST-ful. ¿Podría alguien ayudarme a entender las diferencias?

Author: abatishchev, 2010-03-17

7 answers

ACTUALIZAR Advertencia, esta respuesta está extremadamente desactualizada ahora que OData V4 está disponible.


Escribí un post sobre el tema hace un tiempo aquí.

Como dijo Franci, OData se basa en Atom Pub. Sin embargo, han superpuesto algunas funcionalidades y desafortunadamente han ignorado algunas de las restricciones del RESTO en el proceso.

La capacidad de consulta de un servicio OData requiere que construya URI basados en información que no está disponible, o vinculado a en la respuesta. Es lo que las personas de REST llaman información fuera de banda e introduce un acoplamiento oculto entre el cliente y el servidor.

El otro acoplamiento que se introduce es a través del uso de metadatos EDMX para definir las propiedades contenidas en el contenido de la entrada. Estos metadatos se pueden descubrir en un punto final fijo llamado metadata metadata. Una vez más, el cliente necesita saber esto de antemano, no se puede descubrir.

Desafortunadamente, Microsoft no consideró adecuado crear tipos de medios para describir estas piezas clave de datos, por lo que cualquier cliente OData tiene que hacer un montón de suposiciones sobre el servicio con el que está hablando y los datos que está recibiendo.

 94
Author: Darrel Miller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-08 11:09:09

El protocolo OData se construye sobre el protocolo AtomPub. El protocolo AtomPub es uno de los mejores ejemplos de diseño de API REST. Por lo tanto, en cierto sentido tiene razón: OData es solo otra API REST y cada implementación de OData es un servicio web REST - ful.

La diferencia es que OData es un protocolo específico; REST es el estilo de arquitectura y el patrón de diseño.

 61
Author: Franci Penov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-16 22:03:59

REST es una técnica de diseño genérico utilizada para describir cómo se puede acceder a un servicio web. Utilizando REST puedes realizar solicitudes http para obtener datos. Si lo intenta en su navegador sería como ir a un sitio web, excepto que en lugar de devolver una página web que obtendría de nuevo XML. Algunos servicios también devolverán datos en formato JSON que es más fácil de usar con Javascript.

OData es una tecnología específica que expone datos a través de REST.

Si quieres resumirlo muy rápido, piensa de ella como:

  • RESTO-patrón de diseño
  • Tecnología habilitadora de OData
 29
Author: Rush Frisby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-24 15:25:38

En 2012 OData se sometió a la estandarización, así que voy a añadir una actualización aquí..

Primero las definiciones:

REST - es una arquitectura de cómo enviar mensajes a través de HTTP.

OData V4 - es una implementación específica de REST, realmente define el contenido de los mensajes en diferentes formatos (actualmente creo que es AtomPub y JSON). ODataV4 sigue los principios de descanso.

Por ejemplo, asp.net la gente utilizará principalmente el controlador WebAPI para serializar / deserializar objetos en JSON y hacer que javascript haga algo con él. El punto de Odata es poder consultar directamente desde la URL con opciones listas para usar.

 16
Author: tatigo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-05 21:12:57

De la documentación de OData :

El Protocolo OData es un protocolo de nivel de aplicación para interactuar con datos a través de servicios web RESTful.

...

El Protocolo OData es diferente de otros enfoques de servicios web basados en REST en que proporciona una forma uniforme de describir tanto los datos como el modelo de datos.

 8
Author: mcanti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-08 03:23:31

OData (Open Data Protocol) es un estándar OASIS que define lo mejor practique para crear y consumir API RESTful. OData te ayuda concéntrese en su lógica de negocio mientras crea API RESTful sin tener que preocuparse por los enfoques para definir la solicitud y la respuesta encabezados, códigos de estado, métodos HTTP, convenciones de URL, tipos de medios, formatos de carga útil y opciones de consulta, etc. OData también te guía sobre seguimiento de cambios, definición de funciones / acciones para reutilizables procedimiento y envío de solicitudes asincrónicas/por lotes, etc. Además, OData proporciona facilidad para la extensión para satisfacer cualquier necesidad personalizada de su API RESTful.

Las API RESTful de OData son fáciles de consumir. Los metadatos OData, a descripción legible por máquina del modelo de datos de las API, habilita la creación de potentes proxies y herramientas genéricas de cliente. Algunos pueden ayudarte a interactuar con OData incluso sin saber nada sobre el protocolo. Los siguientes 6 pasos demostrar 6 interesante escenarios de consumo OData en diferentes plataformas de programación. Pero si usted es un no desarrollador y le gustaría simplemente jugar con OData, XOData es el mejor comienzo para ti.

Para más detalles en http://www.odata.org /

 3
Author: RajeshVerma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-19 19:48:03

ODATA es un tipo especial de RESTdonde podemos consultar datos uniformemente desde la URL.

 1
Author: Minh Nguyen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-22 11:49:06