Open Data Protocol (OData) es un protocolo que permite a cualquier cliente obtener información de cualquier fuente mediante servicios REST, permitiendo pasar por parámetros los filtros a aplicar en los resultados. Este protocolo utiliza otros protocolos y tecnologías ya reconocidas como HTTP, AtomPub o JSON.
Una ventaja de OData frente a trabajar con un servicio plano REST de JSON, es que OData tiene opciones de manipulación sobre las consultas. Algunas de ellas son: orderby, top o skip, por ejemplo. Esto se realiza mediante las convenciones de URI, donde se especifican las query Options que tienen que ser aplicadas al obtener el recurso especificado. También define una manera de consultar los metadatos de la información que se consumirá.
Desde WebApi se puede habilitar el soporte de queries de dos maneras:
- Mediante atributo en los métodos GET
- EnableQuerySupport al inicio de la aplicación
Veamos pues algunas consultas:
Con esta consulta obtendremos los productos cuyo nombre empieza por ‘Game’ y la url generada será parecida a la siguiente: http://localhost:9600/odata/Products?$filter=startswith(Name,’Ana’) eq true
Esta query agrupa por categorías mientras que la siguiente ordena por precios.
Como se puede ver hay una amplia gama de opciones para realizar las consultas, pero Odata también tiene sus limitaciones, como por ejemplo no acepta del ‘Distinct’.
Escribir un conjunto de consultas es fácil con OData, pero en aplicaciones grandes se puede hacer pesado, así que aquí aparece BreezeJs, que es un framework que nos ayuda a genera las queries por nosotros.
BreezeJs está basado con las consultas estándares de OData, pero no esta limitado a realizar las consultas con OData. Permite manejar grafos de objetos complejos, caches de datos, realizar querys sobre objetos locales, además de las operaciones básicas de OData, es decir, el CRUD.
Breeze siempre usa metadatos para trabajar con los objetos. Web Api OData expone el servicio de metadatos a través de su endpoint.
Una vez se ha configurado Breeze en la parte de cliente, ya se puede empezar a trabajar con Breeze, lanzando queries contra el endpoint de OData.
Además Breeze también tiene implementada la parte cliente con lo que que hace todavía más transparente el trabajar con OData, evitando la manipulación de las querystrings, Breeze lo hace por nosotros.
En la siguiente imagen vemos las consultas anteriores utilizando Breeze:
Conclusión:
OData y Breeze nos propocionan facilidades para personalizar consultas en el lado del cliente y gracias a que OData se puede utilizar para acceder a datos de diversas fuentes es uno de los protocolos más utilizados actualmente, junto a su facilidad de implementación.
Referencias:
http://www.getbreezenow.com/breezejs
https://msdn.microsoft.com/en-us/data/hh237663.aspx
https://msdn.microsoft.com/en-us/library/ff478141.aspx
Más información:
Irene Carchano es ingeniera superior en informática por la Universidad Autónoma de Barcelona. Entró en Sogeti España en julio de 2014 como programadora junior.
Sogeti puede ayudarle con esta y otras tecnologías Microsoft. Si quiere saber cómo, visite nuestra web.
Interesante artículo Irene. Un saludo.
Me gustaMe gusta