Как создать собственную социальную сеть на .NET
Это отличный проект для самостоятельной реализации.
Базовая реализация платформы может включать следующие сущности:
↳ Пользователи
↳ Посты и категории
↳ Лайки и комментарии
↳ Лента
↳ Уведомления
Рассмотрим реальный кейс:
Пользователь открывает сайт соцсети и видит:
↳ Ленту с актуальными постами
↳ Свои собственные публикации
↳ Уведомления о новых постах, комментариях и лайках к интересующим его записям
Типичное frontend-приложение делает три отдельных запроса к серверу:
Получение ленты
GET /api/feed?userId=1&count=10
Получение уведомлений
GET /api/notifications?userId=1&count=10
Получение постов пользователя
GET /api/users/1/posts?count=10
У этой реализации два ключевых недостатка:
Клиенту приходится делать три отдельных запроса к серверу
Клиенты получают все поля, которые возвращает сервер. Для веба это приемлемо, но для мобильных приложений — избыточно и может замедлять работу
Решение — GraphQL
GraphQL был создан как альтернатива REST, чтобы решить эти проблемы.
Hot Chocolate это самый эффективный и функциональный open-source GraphQL-сервер в экосистеме .NET. Он позволяет легко строить масштабируемые GraphQL API и шлюзы.
Преимущества Hot Chocolate по сравнению с REST API:
Клиент сам выбирает, какие поля ему нужны — никакого
overfetch/underfetch
Все данные можно запросить одним запросом, без лишних round-trip’ов
Автогенерация документации, генерация кода и автодополнение в IDE синхронизируют frontend и backend
Встроенные фильтрация, сортировка и пагинация — middleware всё берёт на себя, причём делает это лучше и проще, чем OData
Интерфейс Nitro GraphQL позволяет визуально исследовать типы, собирать запросы и тестировать их за секунды
Я использую Hot Chocolate GraphQL в продакшене уже более трёх лет, и это сильно прокачало мои подходы к построению API.
Автор собрал простую реализацию социальной сети на базе Hot Chocolate GraphQL, и сегодня поделился
пошаговой инструкцией с разработчиками, как сделать это правильно с учётом best practices.
Исходный код доступен бесплатно.
@KodBlog
Обсуждение 0
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram