GraphQL çok popüler, çok güçlü, ama temelde OData'dan farklı. Yani hiçbiri kesinlikle diğerinden daha iyi değil.
Birkaç noktayı anlayabileceğim noktalar var.
OData = URL'de SQL
OData, bir SQL ifadesini URL'ye serileştirmenin bir yoluydu
İstemci tarafının sorgulama yeteneğini sınırlamak zordur.
OData Standartlaştırılmış
OData'nın özelliği onun gücü, tıpkı RPC'nin RESTful'a yaptığı gibi. RESTful'un özellikleri var ve anlaşılması kolay, ama her şeyi ifade etmek kolay değil. RPC her şeyi ifade edebilir ama çok standartlaştırılmamış.
OData'daki Kusurlar
OData genellikle veritabanı şeması durumundan daha sıkı (yani SQL Sorgusu gibi) ve şema değiştirildiğinde eski sürümü sürdürmek zorlaşıyor.
OData birleşik yönetimi tercih eder ve özel durumlar için optimize etmek zordur.
En iyi şekilde tanımlanır
OData SQL Sorgusu gibi, GraphQL ise depolanmış prosedür gibi. Yavaş yavaş tadıyorsun.
Bu nedenle, bu ikisi birlikte var olmalı ve birbirini tamamlamalıdır.
özet
OData SQL Sorgusu gibi, GraphQL ise depolanmış prosedür gibi.
OData RESTful gibi, GraphQL ise RPC gibi
Basit birleştirme istiyorsanız, RESTFul'un harika olduğunu, SQL Sorgulama'nın yeterli, OData'nın da iyi olduğunu göreceksiniz.
Ama özel durumlar yaşadığınızda ve basit bir yöntem, RPC, saklanan prosedür kullanamadığınızda, GraphQL cazibesini vurguluyor.
Her iki tarafın kullanım senaryolarına bakalım. OData, SAP gibi kurumsal uygulamalar için bir API olmaya eğilimlidir. Genellikle daha basit, ilişkisel veritabanı desenini kullanır.
GraphQL bir İnternet uygulaması, açık bir API ve herhangi bir tür veri (örneğin NoSQL gibi)
Özetle, GraphQL OData'dan daha fazla (daha özgür) ifade edebilir, OData'nın kuralları (daha fazla kısıtlama) vardır (GraphQL'den daha fazla).
Hangisi var, dış dünya için GraphQL mi, yoksa iç dünya için OData mı, bu gerçekten projenin ne kadar kullanacağına bağlı.