web-dev-qa-db-fra.com

OData vs GraphQL

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

Quel serait le meilleur moyen de retourner un gros JSON volumineux ou des données binaires?

32
Yar0myr

J'ai effectué des recherches et j'ai également essayé avec GraphQL dans Dot Net et Odata dans DotNet Web API de créer une démonstration pratique et ce que j'ai trouvé:

  1. Ergonomie du développeur Considérant que vous avez déjà WebAPI (DotNet Framework) et que vous souhaitez migrer vers WebAPI compatible GraphQL ou OData, puis La solution consiste à choisir OData en raison de sa facilité d’intégration et de sa fonctionnalité Filtre immédiat, Commande par commande, Sélection, Développement, etc. (Voir MSFT sur DotNet OData ). Si vous choisissez GraphQL, vous devez effectuer beaucoup de travaux, tels que Créer un type, Schéma et Requête et Implémenter le résolveur pour chaque requête.
  2. Performance dépend de la logique de votre requête. GraphQL et Odata ont tous les deux la capacité d'obtenir ce que vous demandez en utilisant $ select dans OData et dans GraphQL, vous pouvez demander selon 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 souhaitez pas conserver le point de terminaison de la gestion des versions, le nom du champ Autosuggest et le type de schéma, alors GraphQL est la meilleure option. Mais la disponibilité de la bibliothèque GraphQL pour chaque framework et communauté varie en fonction de la pile technologique (par exemple nodejs, C #, Ruby, Java etc.)

Oui, j'ai examiné et lu l'article de Telerik qui l'ont décrit en détail. Comparaison PDF Pour GraphQL et Odata Je joins uniquement une image de comparaison côte à côte. Vous pouvez creuser des détails dans le lien Référence GraphQL vs OData .

API standard

Standard API

Ici, Non dans l'API La gestion des versions/maintenance est positive, ce qui signifie un point de terminaison unique et se débarrasse de deux API versionnées

Capacité de requête

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 l'opération CRUD.

Toutefois, si vous connaissez Sharepoint REST et Office 365 REST), elle est basée sur OData et fournit un large éventail d’API. Maintenant, Microsoft crée une API universelle qui s'appelle Graph API ou Microsoft Graph et qui, par défaut, est activé pour les requêtes CORS et les nœuds finaux unifiés à Request from Office 365, 365, l'API Outlook Exchange, l'API OneDrive, etc., qui prennent également en charge OData.

34
anomepani

Cela ne semble pas non plus être une bonne idée d’utiliser la méthode POST pour demander des données. Et apparemment, la quantité de données nécessaire pour adresser une demande au serveur est beaucoup plus grande. Selon des exemples de la article de Sumit Sarkar :

Example for OData

Example for GraphQL

La quantité de données transférées pour faire une demande est beaucoup plus grande dans GraphQL que dans OData. Bien que le résultat (réponse) soit le même.

13
Silvair L. Soares