Les inconvénients D'OData? [fermé]

j'enquête sur L'utilisation D'OData pour nos services web Java RESTful. J'ai une longue liste d'avantages pour utiliser OData qui constituent un bon argument pour l'utiliser. Cependant, après avoir lu beaucoup de documents sur OData, Je n'ai vu aucune liste de désavantages afin de prendre une décision finale.

est-ce que quelqu'un connaît les inconvénients de L'utilisation D'OData (odata4j dans ce cas)?

Merci

Sarah

61
demandé sur Sarah Rushworth 2011-08-22 23:20:50

7 réponses

certaines requêtes ne peuvent tout simplement pas être exécutées et vous finissez par créer des vues - par exemple voir ce post: WCF service operations to return an object graph . C'est parce que vous ne pouvez pas filtrer les enregistrements élargis par exemple, dire que vous avez des gens avec des commandes et vous voulez tous les gens et leurs commandes de gâteaux; si vous commencez votre requête OData avec des personnes et d'élargir les commandes, vous pouvez obtenir tous les gens qui ont commandé des gâteaux, mais, vous obtiendrez aussi toutes leurs commandes, pas seulement ceux pour les gâteaux. La plupart du temps ce n'est pas un problème, puisque vous pouvez tourner la requête sur sa tête c.-à-d. commencer avec les commandes et élargir les gens. Parfois, bien que cela ne puisse pas être fait et que vous ayez besoin de créer une vue.

pas d'équivalent du SQL In, il faut faire le long chemin avec un tas d'ors.

, vous devez soit faire un appel supplémentaire à une opération OData ou les faire côté client, ce qui n'est pas bon si vous voulez page données et afficher des agrégats.

essayez de coller avec JSON, ATOM est exagérément gonflé avec les données réelles de prendre une petite partie du packetsize

en fonction de votre service - messages d'erreur obscurs et inutiles qui vous font parcourir les mises à jour OData en essayant de trouver exactement ce qui a causé l'erreur.

si je peux penser à autre chose, je reviendrai et je les ajouterai.

il y a longtemps que votre post original, peut-être que vous avez découvert quelques autres inconvénients vous-même?

24
répondu A Aiston 2017-05-23 12:25:48

à mon avis, L'inconvénient avec OData (face à l'internet public) est avec les paramètres de requête que le client peut ajouter à l'url pour filtrer ce que le flux montre. OData permet au client de faire essentiellement un appel/logique de base de données sur les données pour leur retourner un flux "personnalisé".

cela couple le client à l'alimentation et ils ont besoin de connaissances préalables de ce qu'ils peuvent utiliser et filtrer sur (ce qui je pense va à l'encontre du concept de repos de la découverte). Également, cela signifie qu'ils l'utilisent d'une manière que vous ne pouvez pas vraiment voir/contrôler, ce qui signifie que leur application client pourrait être très étroitement liée à votre flux et à l'appel de base de données/logique qui y est annexé (il y a beaucoup de méthodes disponibles pour le client à utiliser avec l'url).

Dans un environnement contrôlé ou avec seulement quelques les consommateurs, cela peut être un avantage pour Odata comme il est facile et puissant pour l'utilisateur final.

Mais, à mon avis, si il est exposé publiquement cela pourrait vous donner des maux de tête chaque fois que vous avez besoin de changer votre alimentation ou de mise à niveau, car vous devez vous assurer de ne pas briser les implémentations "inconnues". Si les fonctions sont disponibles, les gens vont l'utiliser . . .

pour le moment, cette fonctionnalité ne peut pas être désactivée mais est disponible par défaut.

14
répondu Chris Jones - Belgium 2012-05-18 09:00:58

un inconvénient est que vous ne pouvez pas écrire votre propre API propriétaire et lourde et la documentation qui va avec elle afin que les consommateurs sachent comment écrire des requêtes contre votre service.

Non, attendez-ce n'est pas vraiment un inconvénient, donc je suppose que je ne peux pas vraiment penser à tout de suite. < grin / >

pour développer cette réponse et la comparer à SOAP:

savon est également un Totalement acceptable méthodologie et est publiée norme. Cependant, le REST offre un accès léger aux apatrides. utiliser les verbes HTTP, et OData est simplement un ensemble de conventions URI pour l'accès à des services de repos disparates au moyen d'une méthodologie commune; comme L'affiche originale décrivait Java RESTful web services, Je a donné ma réponse langue-dans-la-joue ci-dessus dans le contexte du repos et OData. En outre: pas de WSDL requis pour OData, puisque la spécification est commun à tous les services OData, et le service lui-même (lors de la conformité avec la spécification) décrit les offres de données.

[tiré de mon commentaire sur cette réponse.]

12
répondu Boris Nikolaevich 2015-11-23 17:02:08

à partir de V2 le seul inconvénient que je vois est le manque de capacités de requête sur les relations un-à-plusieurs vers le plus grand nombre. Donc, si les auteurs et les articles dans votre modèle, vous êtes en mesure d'interroger des articles avec des attributs d'auteur dans la requête mais pas l'inverse: vous ne pouvez pas interroger pour les auteurs avec des articles spécifiques.

à partir de OData V2 Any, tous les opérateurs ne sont pas non plus pris en charge, mais cette question est traitée dans V3 (basé sur des spécifications préliminaires mais fermées)

5
répondu Peter Aron Zentai 2013-09-26 12:33:09

spécifiquement pour OData et Java4Odata, il y avait quelques problèmes de compatibilité je crois. Nous exposons OData et avons une autre équipe qui le consomme de Java. Ils n'étaient pas entièrement satisfaits et apparemment ont eu beaucoup de discussions sur la liste de diffusion à ce sujet.

en outre, OData ne semble pas obtenir aussi populaire que Microsoft prévu (promis). Ainsi, les avantages qui existent ne sont réellement présents que si les consommateurs sont en mesure de rivaliser avec les producteurs. Pour exemple, OData vous donne des paradigmes de données de navigation et d'interrogation, mais s'ils ne sont pas utilisés, que reste-t-il?

et sans véritables consommateurs et producteurs en plusieurs langues, OData est aussi bon que n'importe quel autre protocole propriétaire.

2
répondu Alexandre Rafalovitch 2011-09-01 21:36:56

lorsqu'on examine les avantages par rapport aux inconvénients, on peut considérer les choses de façon abstraite ou en se référant à un projet ou à un scénario particulier.

parlant abstraitement pour un moment, il faut réfléchir à la valeur des "standards". Les normes sont comme les dollars, les gouvernements et les frontières... ils n'existent que pour le point que les gens croient qu'ils existent. Autrement, l'argent n'est que du papier (ou à l'ère numérique, des nombres). Ainsi, la question devient, comment cela sera adopté? C'est quelque chose que je suis venu découvrir ici, bien que mon enquête préliminaire suggère qu'il n'y aura pas de technologie qui soit omniprésente. Les gens adoptent toutes sortes de nouvelles technologies en grand nombre.

alors dans les détails, vous pourriez vous retrouver à comparer à des alternatives telles que MongoDB (qui est, je crois, très similaire), avec une référence particulière aux besoins ressentis par votre organisation. Encore une fois, c'est quelque chose que je suis venu découvrir.

ma pensée est que la tendance importante est loin d'envoyer quelque chose sur le fil qui a déjà été rendu dans HTML et au lieu d'envoyer des données comme une variante de JSON et de fournir le Javascript qui sera utilisé par le navigateur pour le rendre. Au fur et à mesure que les pilotes des différentes variantes JSON émergeront, il sera trivial de changer entre l'une ou l'autre. En voici un pour oData:

http://www.rssbus.com/ado/odata/

qui, je comprends, vous permettra de prétendre que vous avez affaire à Sql Server. Je pense que nous verrons plus de cette abstraction de la couche de type JSON permettant une plus grande liberté par rapport aux "standards". Mais encore une fois, c'est ce que je suis ici pour le découvrir.

2
répondu Ruminator 2012-07-07 10:39:44

Je ne sais pas spécifiquement pour ODataJ4. Je sais qu'il y a un certain nombre de ressources à http://www.odata.org / , y compris une liste de producteurs et de consommateurs d'odata ainsi qu'une liste de langues connues pour la soutenir. OData a ses limites dans les zones et dépend de quelle version du protocole vous utilisez. OData est encore en cours de développement à partir de nombreuses implémentations pour prendre pleinement en charge les versions. Donc, si vous êtes après les choses supplémentaires que vous obtenez en v3 de la protocole je pense que vous trouverez qu'un certain nombre d'implémentations sont pas encore tout à fait là.

au-delà d'un certain manque de fonctionnalité dans les fournisseurs, la seule chose à laquelle je pense est le manque de flexibilité (si c'est un inconvénient). En général à OData il y a une façon de faire quelque chose.

je voudrais juste souligner aussi qu'odata est publié sous Open Spécification Promise "151920920 de Microsoft et il n'y a aucune intention jamais frais pour l'utilisation de ce protocole.

j'espère que ça aide

1
répondu Ashleigh Farnham 2011-10-18 21:27:21