OData против GraphQL

Есть ли хорошее сравнение GraphQL и OData с точки зрения производительности, удобства использования разработчиками, сообщества и т. д. Все статьи, которые я нахожу в Интернете, очень предвзяты.

Как лучше всего вернуть большие объемные данные в формате JSON или двоичные данные?

jeffhandley.com/2018-09-13/graphql-is-not-odata - очень полезно
tom redfern 20.05.2019 13:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
58
1
26 621
2

Ответы 2

Я исследовал и также пробовал использовать как GraphQL в Dot Net, так и Odata в DotNet Web API, чтобы создать рабочую демонстрацию, и то, что я обнаружил,

  1. Удобство использования для разработчиков Учитывая, что у вас есть существующий WebAPI (DotNet Framework) и вы хотите перейти на GraphQL или OData-совместимый WebAPI, мой ответ - выбрать OData из-за его простой интеграции и функции Out of the Box Filter, OrderBy, Select, Expand и т. д. (См. MSFT в DotNet OData ). Если вы выберете GraphQL, вам придется проделать большую работу, например, создать тип, схему и запрос, а также реализовать преобразователь для каждого запроса.
  2. Представление зависит от вашей логики запроса. GraphQL и Odata Оба имеют возможность получить то, что вы запрашиваете, используя $ select в OData, а в GraphQL вы можете запросить по их соглашению о запросах.
  3. Разработка API с нуля, если вам нужна только одна конечная точка для всех запросов API и вы не хотите поддерживать конечную точку управления версиями, имя поля автозаполнения и тип схемы, тогда GraphQL - лучший вариант. Но доступность библиотеки GraphQL для каждой платформы и сообщества зависит от стека технологий (например, nodejs, C#, Ruby, Java и т. д.).

Да, я просмотрел и прочитал статью Telerik, в которой подробно описано. Сравнение PDF Для GraphQL и Odata Я прилагаю параллельное изображение сравнения, только вы можете выкопать подробности в Ссылке ссылки GraphQL против OData.

Стандартный API

Standard API

Здесь Нет в управлении версиями / обслуживании API является положительным, что означает единую конечную точку и избавление от двух API с поддержкой версий.

Возможность запроса

Query Capability

Поверхностные возможности

Surface Capability

В основном служба OData используется, когда вы хотите предоставить доступ к своей базе данных с минимальными усилиями для работы CRUD.

Однако, если вы знаете о Sharepoint REST API и Office 365 REST API, он основан на OData и предоставляет широкий спектр API. Сейчас Microsoft создает универсальный API, который называется Graph API или Microsoft Graph, который по умолчанию включен для запросов CORS и унифицированных конечных точек для запросов из Office 365, Dynamics 365, Outlook Exchange API, Onedrive API и т. д. Которые также поддерживают OData.

Я знаю, что это старый ответ, но похоже, что GraphQL теперь поддерживает фильтрацию и упорядочение. howtographql.com/graphql-js/8-filtering-pagination-and-sorti‌ ng

Junaid 25.02.2021 17:15

Да Поддерживается OData Фильтр OOTB (из коробки) с GraphQL, используя нашу логику, которую мы можем реализовать (y)

anomepani 07.05.2021 14:51

Также не кажется хорошей идеей использовать метод POST для запроса данных. И очевидно, что объем данных, необходимых для запроса к серверу, намного больше. По примерам из Сумит Саркар статья:

Example for OData

Example for GraphQL

Объем данных, передаваемых для выполнения запроса, в GraphQL намного больше, чем в OData. Хотя результат (ответ) тот же.

Запросы большего размера, и вы запрашиваете данные с помощью HTTP POST, который просто кажется грязным.

Matthew Whited 10.10.2019 18:34

Это кажется грязным, но после того, как API созреет, вы получите по крайней мере некоторые настраиваемые действия на конечных точках OData, для которых вы должны указать параметры POST с целью получения специализированного набора данных. Я на 100% профессионал в области OData, но GraphQL действительно устраняет необходимость в некоторых из этих настраиваемых действий, которые существуют для обработки сложных запросов, которые вы не можете выполнить с помощью соглашений об URL-адресах.

Chris Schaller 24.06.2020 13:27

Другие вопросы по теме