59 votes

OData et GraphQL

Existe-t-il une bonne comparaison entre GraphQL et OData en termes de performances, de facilité d'utilisation pour les développeurs, de communauté, etc. Tous les articles que je trouve sur Internet sont très partiaux.

Quelle serait la meilleure façon de renvoyer un gros fichier volumineux JSON ou des données binaires ?

0 votes

59voto

anomepani Points 167

J'ai fait des recherches et j'ai également essayé avec GraphQL dans Dot Net et Odata dans DotNet Web API pour créer une démo fonctionnelle.

  1. Utilisabilité des développeurs Si vous disposez d'une WebAPI existante (DotNet Framework) et que vous souhaitez migrer vers une WebAPI compatible avec GraphQL ou OData, ma réponse est de choisir OData en raison de sa facilité d'intégration et de ses fonctions de filtrage, de commande, de sélection, d'expansion, etc. MSFT sur DotNet OData ). Si vous choisissez GraphQL, vous devez faire beaucoup de travail comme créer un type, un schéma et une requête et implémenter un résolveur pour chaque requête.
  2. Performance dépend de la logique de votre requête. GraphQL et Odata ont tous deux la capacité d'obtenir ce que vous demandez en utilisant $select dans OData et dans GraphQL vous pouvez demander par leur convention de requête.
  3. Développement d'API à partir de zéro, si vous voulez un seul point de terminaison pour toutes les demandes d'API et ne voulez pas maintenir le point de terminaison de versionnement, le nom du champ de suggestion automatique et le type de schéma, alors GraphQL est la meilleure option. Mais la disponibilité de la bibliothèque GraphQL pour chaque cadre et communauté varie selon la pile technologique (par ex. nodejs, C#, Ruby, Java etc)

Oui, j'ai examiné et lu l'article de Telerik qui ont été décrites en détail. Comparaison PDF Pour GraphQL et Odata Je joins une image de comparaison côte à côte, mais vous pouvez trouver des détails dans le lien de référence. GraphQL et OData .

API standard

Standard API

Ici, Non La version et la maintenance des API sont positives, ce qui signifie qu'il n'y a qu'un seul point d'accès et qu'il n'y a plus deux versions des API.

Capacité d'interrogation

Query Capability

Capacité de surface

Surface Capability

Le service OData est principalement utilisé lorsque vous souhaitez fournir un accès à votre base de données avec un minimum d'effort pour une opération CRUD.

Cependant, si vous connaissez l'API REST Sharepoint et l'API REST Office 365, vous saurez qu'elles sont basées sur OData et qu'elles offrent un large éventail d'API. Maintenant, Microsoft construit une API universelle appelée Graph API ou Microsoft Graph qui, par défaut, est activée pour les demandes CORS et les points de terminaison unifiés pour demander à partir d'Office 365, dynamics 365, Outlook Exchange API, Onedrive API, etc. Qui sont également des supports OData.

0 votes

Je sais que c'est une vieille réponse mais il semble que GraphQL supporte maintenant le filtrage et l'ordonnancement. howtographql.com/graphql-js/8-filtrage-pagination-et-tri

0 votes

Oui OData Supporté Filtre OOTB (Out Of the Box) avec GraphQL en utilisant notre logique nous pouvons mettre en œuvre (y)

17voto

Silvair L. Soares Points 405

Il ne semble pas non plus que ce soit une bonne idée d'utiliser la méthode POST pour demander des données. Et apparemment, la quantité de données nécessaires pour effectuer une requête au serveur est beaucoup plus importante. D'après des exemples tirés du Article de Sumit Sarkar :

Example for OData

Example for GraphQL

La quantité de données transportées pour effectuer une requête est beaucoup plus importante en GraphQL qu'en OData. Cependant, le résultat (réponse) est le même.

1 votes

Si les requêtes sont plus nombreuses, vous interrogez les données avec HTTP POST, ce qui est tout simplement sale.

3 votes

Cela semble sale, mais après qu'une API soit arrivée à maturité, vous finissez par avoir au moins quelques actions personnalisées sur des points de terminaison OData auxquels vous devez envoyer des paramètres POST dans le but de récupérer un ensemble de données spécialisées. Je suis à 100% en faveur d'OData, mais GraphQL résout le besoin de certaines de ces actions personnalisées qui existent pour gérer des requêtes complexes que vous ne pouvez pas faire via les conventions Url.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X