brasil - Desventajas de OData?
odata vs graphql (7)
A partir de V2, la única desventaja que veo es la falta de capacidades de consulta en las relaciones de uno a muchos hacia el extremo múltiple. Por lo tanto, si los autores y los artículos de su modelo pueden consultar los artículos con atributos de autor en la consulta, pero no a la inversa: no puede consultar los autores con artículos específicos.
A partir de OData V2 Cualquiera, tampoco se admiten todos los operadores, pero esto se trata en V3 (basado en especificaciones preliminares pero cerradas)
Estoy investigando el uso de OData para nuestros servicios web RESTful de Java. Tengo una larga lista de ventajas para usar OData que constituyen un buen argumento para usarla. Sin embargo, después de leer muchos artículos sobre OData, no he visto ninguna lista de desventajas para tomar una decisión final.
¿Alguien sabe de las desventajas de usar OData (odata4j en esta instancia)?
Gracias
Sarah
Al observar las ventajas frente a las desventajas, uno puede considerar las cosas de manera abstracta o con referencia a un proyecto o escenario en particular.
Hablando de manera abstracta por un momento, uno tiene que reflexionar sobre el valor de los "estándares". Las normas son como dólares, gobiernos y fronteras ... solo existen hasta el punto en que las personas creen que existen. De lo contrario, el dinero es solo papel (o en una era digital, números). Así que la pregunta es, ¿cuán ampliamente será adoptado? Eso es algo que vine aquí para descubrir, aunque mi investigación preliminar sugiere que no surgirá ninguna tecnología ubicua. La gente está adoptando todo tipo de nuevas tecnologías en gran número.
Luego, en los detalles, puede que se encuentre en comparación con alternativas como MongoDB (que es, a mi juicio, muy similar), con referencia particular a las necesidades sentidas de su organización. Una vez más, es algo que vine aquí para descubrir.
Mi pensamiento es que la tendencia importante es alejarse de enviar algo a través del cable que ya se ha procesado en HTML y en su lugar enviar datos como una variante de JSON y proporcionar el Javascript que utilizará el navegador para procesarlo. A medida que surgen los controladores para las diversas variantes de JSON, será trivial cambiar entre uno u otro. Aquí hay uno saliendo para oData:
http://www.rssbus.com/ado/odata/
Eso, según tengo entendido, le permitirá simular que está tratando con un servidor Sql. Creo que veremos más de esa abstracción de la capa tipo JSON que permite una mayor libertad de los "estándares". Pero una vez más, eso es lo que he venido a descubrir.
Algunas consultas simplemente no se pueden ejecutar y terminas creando vistas; por ejemplo, consulta esta publicación: operaciones de servicio WCF para devolver un gráfico de objetos . Esto se debe a que no puede filtrar los registros ampliados; por ejemplo, digamos que tiene personas con pedidos y desea que todas las personas y sus pedidos de pasteles; Si inicia su consulta de OData con personas y amplía los pedidos, puede obtener todas las personas que han pedido pasteles, pero también recibirá todos sus pedidos, no solo aquellos para pasteles. En la mayoría de los casos, esto no es un problema, ya que puede hacer que la consulta se convierta en un problema, es decir, comenzar con los pedidos y expandir las personas. A veces, aunque no se puede hacer y necesitas crear una vista.
No es equivalente a la entrada de SQL, hay que hacerlo a lo largo con un montón de ors.
Agregados, debe hacer una llamada adicional a una operación OData o hacerlos en el lado del cliente, lo que no es bueno si desea ubicar datos y mostrar agregados.
Trate de seguir con JSON, ATOM está demasiado hinchado con los datos reales que ocupan una pequeña parte del tamaño del paquete.
Dependiendo de su servicio: mensajes de error poco claros e inútiles que lo rastrean a través de las publicaciones de actualización de OData que intentan determinar exactamente qué ha causado el error.
Si se me ocurre algo más, volveré y los añadiré.
Ha pasado mucho tiempo desde tu publicación original, ¿quizás hayas descubierto otras desventajas?
En mi opinión, la desventaja con OData (frente a la Internet pública) es con los parámetros de consulta que el cliente puede agregar a la URL para filtrar lo que muestra la fuente. OData permite al cliente realizar una llamada / lógica de base de datos en los datos para devolver una fuente "personalizada" a ellos.
Esto une al cliente con el feed y necesita un conocimiento previo de lo que puede usar y filtrar (lo que creo que va en contra del concepto REST de capacidad de descubrimiento). Además, esto significa que lo están utilizando de una manera que realmente no puede ver / controlar, lo que significa que su aplicación cliente podría estar muy unida a su feed y la lógica / llamada de la base de datos adjunta a la misma (hay muchos métodos disponibles para el cliente para utilizar con la url).
En un entorno controlado o con solo unos pocos consumidores, esto puede ser una ventaja para Odata, ya que es fácil y poderoso para el usuario final.
Pero, en mi opinión, si se expone públicamente, esto podría provocarle dolores de cabeza cada vez que necesite cambiar su fuente o actualización, ya que debe asegurarse de no romper ninguna implementación "desconocida". Si las funciones están disponibles la gente lo usará. . .
En este momento, esta funcionalidad no se puede desactivar, pero está disponible de forma predeterminada.
Específicamente para OData y Java4Odata, hubo algunos problemas de compatibilidad, creo. Estamos exponiendo OData y tenemos otro equipo que lo consume de Java. No estaban del todo contentos y aparentemente tuvieron muchas discusiones en la lista de correo al respecto.
Además, OData no parecía ser tan popular como Microsoft esperaba (prometido). Entonces, las ventajas que existen solo están realmente presentes si hay consumidores capaces de igualar a los productores. Por ejemplo, OData le proporciona paradigmas de datos de navegación y consulta, pero si no se utilizan, ¿qué queda?
Y sin consumidores y productores completos en múltiples idiomas, OData es tan bueno como cualquier otro protocolo propietario.
No sé específicamente acerca de ODataJ4. Sé que hay una serie de recursos en http://www.odata.org/ incluyen una lista de productores y consumidores de odata, así como una lista de idiomas que se sabe que la respaldan. OData tiene sus limitaciones en áreas y depende de la versión del protocolo que utilice. OData todavía está en desarrollo desde muchas implementaciones para admitir completamente las versiones. Así que si buscas las cosas adicionales que obtienes en v3 del protocolo, creo que encontrarás que varias implementaciones aún no están ahí.
Más allá de la falta de funcionalidad en los proveedores, lo único que puedo pensar es la falta de flexibilidad (si eso es una desventaja). Generalmente en OData hay una manera de hacer algo.
Solo me gustaría señalar también que odata se publica bajo la Promesa de especificación abierta de Microsoft y que no hay ninguna intención de cobrar por el uso del protocolo.
Espero que eso ayude
Una desventaja es que no puede escribir su propia API engorrosa y propietaria, y la documentación que la acompaña para que los consumidores sepan cómo escribir consultas en su servicio.
No, espera, eso no es realmente una desventaja, así que supongo que no puedo pensar en nada de inmediato. <sonrisa />
Para ampliar esta respuesta y compararla con SOAP:
SOAP también es una metodología totalmente aceptable y es un estándar publicado. Sin embargo, dado que REST proporciona un acceso sin estado ligero mediante verbos HTTP, y OData es simplemente un conjunto de convenciones URI para acceder a servicios REST dispares a través de una metodología común, y dado que el póster original describía los servicios web RESTful de Java, di mi lengua. Respuesta de la mejilla arriba en el contexto de REST y OData. Además: no se requiere WSDL para OData, ya que la especificación es común a todos los servicios OData, y el servicio en sí (cuando cumple con la especificación) describe las ofertas de datos.
[Tomado de mi comentario sobre esta respuesta.]