Спасибо за видео, решил использовать Graphql, нашел понятное сравнение с REST по производительности!
@Kulibins1 Жыл бұрын
В нашем полку прибыло 👍
@Kulibins12 жыл бұрын
Перепроверил REST, у меня настроен NewtonJson в качестве серилизатора, поставил стандартный, который быстрее, но это не повлияло на результат.
@evgen86n2 ай бұрын
Все дело в сериализаторах. Хорошо написанный (желательно отдельной внешней либой на С) сериализатор даст аналогичный с GraphQL результат. Однако, с этим новомодным GraphQL придется кучу логики на бэкенде делать (схемы всякие, обработкичики).
@Kulibins12 ай бұрын
@@evgen86n вот именно не нужно изобретать велосипед
@user-mo8kx4yi4g Жыл бұрын
Сделал тоже самое с local MSSQL, REST и GraphQL в одном проекте. Данные беру из EF context в обоих случаях. Скорость одинаковая (как и должно быть). P.S. В целом видео классные, подписался.
@Kulibins1 Жыл бұрын
Я изначально думал что скорость rest будет выше, а она как минимум одинаковая, поэтому graphql очень хорош
@DInfinity32 жыл бұрын
Спасибо большое за видео, они топовые!)
@Kulibins12 жыл бұрын
Рад что нравится, у вас система тоже очень известная 👍
@Дмитрийсекрет-н7о2 жыл бұрын
Спасибо. Классный ролик.
@Kulibins12 жыл бұрын
Всегда пожалуйста.
@Poseidonboy Жыл бұрын
Привет! Не очень понимаю почему GraphQL оказался быстрее, ведь он работает поверх HTTP и наоборот должен только добавлять время. Было бы хорошо, если бы еще сравнили какой SQL запрос генерируется, наверное в нём всё дело?
@Kulibins1 Жыл бұрын
По какой-то причине более оптимальный запрос, хотя и там и там entity. А так накладные расходы graphql ничтожные.
@vladimirv.4432 жыл бұрын
Подскажите, а как в GraphQl лучше работать с динамическими объектами? Получить все поля, без перечисления в query как я понял нельзя? К примеру, имеется динамическая форма (сотрудника), строится на основе конфиг-файла json. С сервера приходит сам объект со всеми полями, строится форма. Почему-то решил спросить в этом ролике )
@Kulibins12 жыл бұрын
Тут может помочь хранение в виде json, когда у вас поле json строка. И при получении её происходит десирелизация
@nouchance2 жыл бұрын
Классика жанра:)
@Kulibins12 жыл бұрын
Спасибо
@ИгорьВасилевич-э4р2 жыл бұрын
Ну да, если с фронта одним запросом графа можно забрать все данные, нежели рестом несколькими запросами с разных эндпоинтов.. И что тогда будет быстрее?
@Kulibins12 жыл бұрын
GraphQL быстрее, но в rest тоже можно сделать специальный запрос который сможет вернуть всё, REST не ограничен CRUD, но такие запросы нужно делать каждый раз, а их может быть много, и они заранее не известны.
@mihail85752 жыл бұрын
Почему с REST возвращаются данные на 20% "легче" чем с GraphQL? Может ли это сказаться при большем объеме данных и реальных условиях по сети?
@Kulibins12 жыл бұрын
Как посчитали 20% ? GraphQL добавляет буквально чуть-чуть, причем т.к. запросы мы группируем, то наоборот у GraphQL будет меньше данных, т.к. у каждого запроса есть еще http header и т.д. если писать под любое требование оптимизированный запрос то мы в ответе json видим дополнительно слово data и название функции, если вы включили что-то для отладки, то это не релизное сравнение, в rest мы то же можем напихать для отладки чего лишнего. Из моего опыта данные во много раз перевешивают слово data и название функции + что бы не говорили а многие не оптимизируют и в результате на rest кучу лишних запросов - GraphQL лишён этих недостатков, разработка ускоряется, запросов меньше.
@mihail85752 жыл бұрын
@@Kulibins1 Респонс для REST: 2.5 килобайта, для GraphQL: 3 килобайта. Но может действительно в реальных условиях с более емкими запросами жила разница или пропадет или не будет так заметна. Спасибо )
@Kulibins12 жыл бұрын
@@mihail8575 посмотрел, и понял почему у вас так, русские буквы в ответе превратились в \u0410\u0432\u0442\u043E\u0440 из-за этого разница в размере. Самое интересное, если поставить ResponseCompression на бэке, то сжатый ответ graphql оказался почему-то значительно меньше 2.9 kb против 8.2 у REST. Если не сжимать, то 84.5 против 61.5 kb у рест. Но у меня на рабочих проектах всегда стоит сжимать. Нужно посмотреть как настраивается сериализация для HotChocolate ( или чем вы пользуетесь )
@ИванПошековский Жыл бұрын
Потому что это очередная абстракция,+ как она реализована внутри вопрос, если у вас в приложении работает , 20% это огромная потеря производительности, это будет заметно
@Kulibins1 Жыл бұрын
@@ИванПошековский я уже ответил на этот вопрос нет такого что rest легче!!! Оно одинаково по размеру ответа. Тут дело в кодировке по умолчанию русского текста. В qraphql hot chocolate тоже можно убрать перекодирование и будет так же, более в rest изначально тоже русский текст через кодировку выдавал, пришлось опцию json серелизации выставлять. Я у себе провел замеры и в ответе на вопрос их выложил. Что rest что grapql это надстройки 🤣 только graphql не медленнее и гораздо фукциональнее , на написание бэка тратится гораздо меньше времени. Конечно если цель: бесконечная работа, то qraphql это минус, а если скорость, функциональность, то это qraphql. Целую статью на Хабре писал GraphQL: как сделать бэкенд приложения экономнее и быстрее habr.com/p/593115/
@kepamuk12 жыл бұрын
Тогда в чем преимущество одного и другого, или графкл просто лучше и все?
@Kulibins12 жыл бұрын
С мой точки зрения GraphQL личе во всем. Но rest проще и более распространен, для некоторых стыковок различных систем между собой наверное лучше использовать rest
@АнтонВоронов-ы9ц2 жыл бұрын
3:31 говорит, что произвел нагрузочный тест, делая 100 запросов за 10 секунд, а результаты якобы говорят что-то о REST.
@Kulibins12 жыл бұрын
Конечно через postman это не прям супернагрузочное тестирование, да и запрос в бд тут реально без кэширования, запрос с join получается - но факт от этого не меняется, думал что накладные расходы у GraphQL будут выше, а оказалось что он не то что не медленее , но и чуть быстрее - Суть видео была сравнить на примере.
@АнтонВоронов-ы9ц2 жыл бұрын
@@Kulibins1 20 - 80 миллисекунд для запроса на локальную машину - это очень медленно для небольших запросов. Думаю, дело не в том, что используется REST.
@Kulibins12 жыл бұрын
@@АнтонВоронов-ы9ц конечно там еще и запрос в базу данных
@vinogradova6192 жыл бұрын
Неожиданно, интересно почему так?
@Kulibins12 жыл бұрын
Сам удивился, думал либо равны, либо REST на одинаковом результате будет быстрее, но вот результат: GraphQL в несколько раз быстрее. Может повлиял еще запрос в базу данных. Sql в горячем шоколаде, чуть от того что entity формирует отличается. Надо еще провести расширенные эксперименты. Изначально в видео хотел показать как тестить Postman, и взял пример, а оно вот как получилось.
@Saveaaa2 жыл бұрын
А что Вы используете в своем основном проекте для генерации отчетов на сайте?
@Kulibins12 жыл бұрын
У меня проекты больше это как замена десктопным приложениям. Раньше была своя система для отчётов. Сейчас хочу поизучать этот вопрос. Проектов много, команд много, посмотрю что кто использует.
@Saveaaa2 жыл бұрын
@@Kulibins1 тоже как замена десктопу начал переносить на blazor проект. Пока проблема только с передачей файла. С отчётами есть идеи, но пока ищу все варианты.
@rudolfsikorsky79002 жыл бұрын
Интересно, спасибо. Я правильно понял что сам GraphQL-сервер тоже написан на Ц#, а не запущена какая-то готовая сборка?
@Kulibins12 жыл бұрын
Да, исходники горячего шоколада лежат на GitHub
@МарсианскийПончик2 жыл бұрын
1:30 дай пожалуйста ссылку на видео про хэш
@Kulibins12 жыл бұрын
Вопрос про это видео, наверное: kzbin.info/www/bejne/ZoKYga1rhN-mpdk
@pawsdev Жыл бұрын
REST в топку вслед за SOAP
@Kulibins1 Жыл бұрын
Rest для всяких стыковок с другими системами очень даже хорошо.
@maria_golubeva_nl2 жыл бұрын
Попробуй сервер на rust написать
@Kulibins12 жыл бұрын
Никогда не занимался rust 😉
@maria_golubeva_nl2 жыл бұрын
@@Kulibins1 там крейт простой async-graphql. У меня схеиа очень простая, запрос в браузере поисходит за три милисекунды
@Kulibins12 жыл бұрын
@@maria_golubeva_nl за 3мс с обращением к postgresql?
@maria_golubeva_nl2 жыл бұрын
@@Kulibins1 нет, статика из памяти
@Kulibins12 жыл бұрын
@@maria_golubeva_nl тут в примере из базы + запрос не просто select
@PutlerXLO2 жыл бұрын
Епте... Что тут можно мерить, если ты меряешь не сам graphql, а реализацию своих контроллеров. Все это http, так что без толку тут мерить.
@Kulibins12 жыл бұрын
Ну тут как раз и меряю все вместе, т.к. запросы идентичные 😉