Το GraphQL είναι πολύ δημοφιλές, πολύ ισχυρό, αλλά είναι θεμελιωδώς διαφορετικό από το OData. Δεν είναι λοιπόν ότι κάποιος είναι απολύτως καλύτερος από τον άλλο.
Υπάρχουν μερικά σημεία που μπορώ να πάρω.
OData = SQL στη διεύθυνση URL
Το OData ήταν ένας τρόπος σειριοποίησης μιας δήλωσης SQL σε μια διεύθυνση URL
Είναι δύσκολο να περιοριστεί η δυνατότητα αναζήτησης από την πλευρά του πελάτη.
Τυποποιημένο OData
Η προδιαγραφή του OData είναι η δύναμή του, όπως ακριβώς κάνει το RPC στο RESTful. Το RESTful έχει προδιαγραφές και είναι εύκολο να κατανοηθεί, αλλά δεν είναι εύκολο να εκφραστούν τα πάντα. Το RPC μπορεί να εκφράσει τα πάντα, αλλά είναι πολύ μη τυποποιημένο.
Ελαττώματα στο OData
Το OData είναι συνήθως πιο σφιχτό από την κατάσταση του σχήματος της βάσης δεδομένων (άρα είναι σαν το SQL Query) και μόλις αλλάξει το σχήμα, είναι πιο δύσκολο να διατηρηθεί η παλιά έκδοση.
Το OData προτιμά την ενοποιημένη διαχείριση και είναι δύσκολο να βελτιστοποιηθεί για ειδικές περιπτώσεις.
Καλύτερη περιγραφή
Το OData είναι σαν το SQL Query, το GraphQL είναι σαν την αποθηκευμένη διαδικασία. Γεύεσαι αργά.
Επομένως, αυτά τα δύο πρέπει να συνυπάρχουν και να αλληλοσυμπληρώνονται.
περίληψη
Το OData είναι σαν το SQL Query, το GraphQL είναι σαν την αποθηκευμένη διαδικασία.
Το OData είναι σαν το RESTful και το GraphQL είναι σαν το RPC
Όταν θέλετε απλή ενοποίηση, θα βρείτε το RESTFul υπέροχο, το SQL Query είναι αρκετό, το OData είναι καλό.
Αλλά όταν έχετε ειδικές καταστάσεις και δεν μπορείτε να χρησιμοποιήσετε μια απλή μέθοδο, RPC, αποθηκευμένη διαδικασία, το GraphQL αναδεικνύει τη γοητεία του.
Ας δούμε τα σενάρια χρήσης και των δύο πλευρών. Το OData τείνει να είναι ένα API για εταιρικές εφαρμογές, όπως το SAP. Συνήθως το απλούστερο, σχεσιακό μοτίβο βάσης δεδομένων.
Το GraphQL είναι μια εφαρμογή Διαδικτύου, ένα εκτεθειμένο API και οποιοσδήποτε τύπος δεδομένων (όπως NoSQL)
Συνοπτικά λοιπόν, το GraphQL μπορεί να εκφράσει περισσότερα (πιο ελεύθερα) από το OData, το OData έχει κανόνες (περισσότερους περιορισμούς) από το GraphQL
Ποιο είναι αυτό, ή το GraphQL για τον έξω κόσμο, ή το OData για τον εσωτερικό, εξαρτάται πραγματικά από το έργο για να το χρησιμοποιήσει.