170 похожих чатов

Привет, народ! Я к вам из мира Java и NodeJS.

Последние годы заценил удобство 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 ответов

11 просмотров

1. Кестрел особо нет смысла настраивать, да и не так много опций там. Принято ставить кестрел за каким-нибудь нжинксом и настраивать всё там. Либо делать модуль для риса 2. SignalR Core. Да, поддерживается 3. Есть, но только в рамках MVC. Вроде как, лежит в отдельном пакете - можно притащить только него 4. Для работы с базами данных есть entity framework, Dapper, linq2db(мой выбор(, EF Core (новый entity framework). На прошлой работе использовал NHibernate. Для редиса есть StackExchange.Redis если использовать, как кеш, то есть интерфейс IDistributed кэш, за которым может прятаться редис. 5. Да

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта