У меня есть устаревший игровой сервер с типичным протоколом TCP-пакетов (длина / тип / данные [длина]), и моя задача - найти современные рамки для его перезаписи.
Написав (маленький) RESTi sh API в ASP. NET Core 2.1. Я знаю, что он обеспечивает функции DI / ведения журнала / конфигурации, которые могут идеально заменить аналогичные функции на старом сервере. Я думал, что смогу использовать ASP. NET Core, чтобы он обрабатывал указанные TCP-пакеты вместо HTTP-запросов.
Теперь я немного застрял в том, с чего начать, и если / как он вписался бы в ASP. NET Ядро. До сих пор я изучал RTFM о внутренней ASP. NET работе ядра и нашел некоторые вещи, которые меня смутили:
- Официальные документы состояние Kestrel поддерживает только HTTP Scenar ios (не хочу использовать IIS). То же самое относится и к тегу 1011 * здесь, на SO.
- Затем я обнаружил проект , в котором утверждается, что в Kestrel добавлена поддержка TCP, но я не до конца понимаю, как это делается. Похоже, что это достигается путем реализации
ConnectionHandler
, но я не вижу, например, где он запускает TcpListener
для приема новых непрерывных соединений с клиентами. - С Kestrel, казалось бы, не может быть и речи Я думал о написании
IHostedService
или BackgroundService
для выполнения всех соединений TCP. - Тогда я не знал, смогу ли я использовать Middleware для передачи своих TCP-пакетов (подумал об авторизации и игре logi c middleware). Официальные документы быстро говорят о HTTP или "веб-" запросах, поэтому я подумал, что о типичном конвейере промежуточного программного обеспечения тоже не может быть и речи.
Подводя итог, мое исследование привело к следующие два вопроса:
- Могу ли я на самом деле использовать Kestrel для непрерывных соединений TCP с двоичной связью?
- Какова связь между конвейером промежуточного программного обеспечения и функциями HTTP / Kestrel? Могу ли я использовать промежуточный программный конвейер в пользовательских службах для связи по протоколу TCP?