Последние годы заценил удобство C#, слежу за развитием .NET и всего связанного с платформой. Хочу сделать .NET своим основным бэкенд-стеком (а в перспективе может и фронтенд, если Blazer допилят до хорошего уровня).
Всвязи с чем сходу есть вопросы, касающиеся самых растространённых и удобных решений, принятых в комьюнити.
1. Кроссплатформенный Веб-сервер для REST API
Я знаю, что в ASPNET Core есть Kestrel, но уж очень муторно он настраивается, и документация есть только по MVC-части. Существует ли какое-то легковесное решение в стиле ExpressJS или Sparkjava? Уже посмотрел Nancy — проект выглядит слегка заброшенным (документация неактуальная, многие вещи вообще нигде не описаны). И посмотрел EmbedIO — не понял, работает ли он поверх Kestrel или пытается что-то своё запилить, но в документации тоже есть непонятные моменты.
Важный нюанс — я не хочу MVC. У меня много бэкенда для всяких ботов, где не нужно представление, и в целом хочется максимальную легковесность и свободу, чтобы я понимал, как работает каждый участок моей программы.
2. Вебсервер для реалтайма. И что там с SignalR?
Поддерживается? Пробовали ли? В чём фишка и отличия от вебсокетов? Почему тот же EmbedIO пишет напрямую про вебсокеты, но не пишет про SignalR?
Существует ли какое-то готовое решение для реалтайма с комнатами, передачей запросов под капотом, менеджментом соединений? Нечто в стиле colyseus.io но для дотнета.
3. Менеджер сессий
Веб-бэкенд, у каждого пользователя своё личное состояние, описываемое экземпляром класса "Пользователь" или "Сессия пользователя". Когда пользователь с заданным идентификатором приходит первый раз, сессия создаётся. И уничтожается при простое заданное число минут/часов. Есть ли какое-то решение на дотнете готовое, чтобы не пилить велосипед каждый раз?
4. ORM и фреймворки для СУБД
Посоветуйте пожалуйста самые удобные и популярные ORM для работы с Postgres и Redis, которые вам известны.
5. Деплой
Таки все живут на Azure? Ищу место типа heroku, куда будет простой автодеплой после пуша в репозиторий, без необходимости самому создавать контейнер. Умеет ли так Azure?
Всем заранее спасибо!
1. Кестрел особо нет смысла настраивать, да и не так много опций там. Принято ставить кестрел за каким-нибудь нжинксом и настраивать всё там. Либо делать модуль для риса 2. SignalR Core. Да, поддерживается 3. Есть, но только в рамках MVC. Вроде как, лежит в отдельном пакете - можно притащить только него 4. Для работы с базами данных есть entity framework, Dapper, linq2db(мой выбор(, EF Core (новый entity framework). На прошлой работе использовал NHibernate. Для редиса есть StackExchange.Redis если использовать, как кеш, то есть интерфейс IDistributed кэш, за которым может прятаться редис. 5. Да
Обсуждают сегодня