2010-03-16 16 views
166

Al buscar en algunos servicios web, encontré esta "nueva" tecnología que Microsoft llama al OData. Al leer su descripción dentro de las preguntas más frecuentes sobre qué es OData, me está resultando difícil distinguir OData de los servicios web REST-ful. ¿Podría alguien ayudarme a entender las diferencias?Diferencia entre los servicios web OData y REST

+2

Uno es productor, el otro es habilitador para los consumidores. – Kangkan

Respuesta

92

ACTUALIZACIÓN Advertencia, esta respuesta está muy desactualizada ahora que OData V4 está disponible.


escribí un post sobre el tema hace un tiempo here.

Como dijo Franci, OData se basa en Atom Pub. Sin embargo, han acumulado algunas funcionalidades en la parte superior y desafortunadamente han ignorado algunas de las restricciones de REST en el proceso.

La capacidad de consulta de un servicio OData requiere que construya URI basados ​​en información que no está disponible, o vinculada a la respuesta. Es lo que las personas 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. Nuevamente, el cliente necesita saber esto de antemano, no puede ser descubierto.

Desafortunadamente, Microsoft no consideró apropiado crear tipos de medios para describir estos datos clave, por lo que cualquier cliente OData tiene que hacer una serie de suposiciones sobre el servicio con el que está hablando y los datos que recibe.

+0

su enlace está roto :(www.bizcoder.com/index.php/2009/11/30/oh-data/ – felickz

+1

@felickz Disculpe por eso. estaba teniendo problemas de DNS. Debería estar funcionando ahora. O lo estará cuando su caché dns expire. –

+0

esta respuesta podría estar desactualizada ahora ... ya que el cliente no solo es microsoft y menciona edmx solo si utiliza un entorno .net – sksallaj

60

El protocolo OData se basa en el protocolo AtomPub. El protocolo AtomPub es uno de los mejores ejemplos del diseño de API REST. Entonces, 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.

+0

Podría estar equivocado en esto (recién comencé a aprender sobre odata), pero a partir de la versión 3 del [protocolo] [http://www.odata.org/documentation] aparece también hay un formato JSON especificado, que usted puede usar alternativamente ¿Puedes arrojar algo de luz sobre esto? –

+1

@JohannesRudolph, sinceramente, no tengo ni idea. No he mirado a OData en los últimos dos años. Pero es bastante probable que Microsoft haya agregado compatibilidad con JSON. Sin embargo, tenga en cuenta que esto de ninguna manera cambia ninguna de las respuestas aquí. JSON vs XML es solo una cuestión de presentación de los recursos REST. –

+1

Puede especificar en la solicitud qué formato le gustaría tener. XML y JSON deben ser compatibles con la mayoría de las implementaciones, por ej. configurando el encabezado Aceptar en la aplicación/json (comenzando desde la versión 2 de OData) – i000174

29

REST es una técnica de diseño genérico que se utiliza para describir cómo se puede acceder a un servicio web. Al utilizar REST, puede realizar solicitudes http para obtener datos. Si lo intentas en tu navegador, sería como ir a un sitio web, pero en lugar de devolver una página web, recibirías 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 desea resumir muy rápido, pensar en ella como:

  • RESTO - patrón de diseño
  • OData - tecnología que permite
8

Desde el OData documentation:

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, ya que proporciona una manera uniforme de describir los datos y el modelo de datos.

13

En 2012 se sometió a OData de normalización, por lo que voy a añadir una actualización aquí ..

En primer lugar las definiciones:

RESTO - 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, las personas asp.net en su mayoría utilizarán el controlador WebApi para serializar/deserializar objetos en JSON y hacer que javascript haga algo con ellos. El objetivo de Odata es poder consultar directamente desde la URL con opciones listas para usar.

3

OData (Protocolo de datos abiertos) es un estándar OASIS que define la mejor práctica para compilar y consumir API RESTful. OData lo ayuda concéntrese en su lógica empresarial mientras construye API RESTful sin teniendo que preocuparse por los enfoques para definir encabezados de solicitud y respuesta , códigos de estado, métodos HTTP, convenciones URL, tipos de medios, formatos de carga útil y opciones de consulta, etc. también lo guía sobre realizando un seguimiento de los cambios, definiendo funciones/acciones para los procedimientos reutilizables y enviando solicitudes asincrónicas/por lotes, etc. Además, OData proporciona la posibilidad de una extensión para satisfacer cualquier necesidad personalizada de sus API RESTful.

OData Las API RESTful son fáciles de consumir. Los metadatos de OData, una descripción legible por máquina del modelo de datos de las API, habilitan para la creación de herramientas y proxies de clientes genéricos poderosos. Algunos de ellos pueden ayudarle a interactuar con OData incluso sin saber nada sobre el protocolo. Los siguientes 6 pasos demuestran 6 escenarios interesantes de del consumo de OData en diferentes plataformas de programación. Pero si no eres desarrollador y solo te gustaría jugar con OData, XOData es el mejor comienzo para ti.

para más detalles al http://www.odata.org/

0

odata es un tipo especial de RESTO donde podemos datos de consulta de manera uniforme de URL.

Cuestiones relacionadas