Доклад

Модульность без микросервисов в ASP.NET из коробки

Микросервисная архитектура стала мейнстримом, но часто ее выбирают «на вырост», не имея реальной потребности в десятках команд и языков. Расплата — рост задержек, распределенная сложность, каскадные отказы, невозможность запустить всё локально одной кнопкой. А если ваша команда одна, БД одна, а микросервисов больше, чем ядер CPU? Что, если код пишется на C#, а не на шести языках?

Выход есть — модульный монолит. Это одно приложение в одном процессе, но его внутренности разбиты на независимые модули с контролируемыми границами. Такой подход дает слабую связанность и высокую связность внутри модуля, но без сетевых вызовов, сериализации и распределенных транзакций. И главное: ASP.NET Core поддерживает его из коробки.

В докладе мы на реальном коде разберем:

  • Как загружать модули выборочно с помощью IHostingStartup и HOSTINGSTARTUPASSEMBLIES, не меняя код программы.
  • Как в каждом модуле регистрировать свои MVC-контроллеры, Minimal API, Razor Pages через ApplicationParts и IStartupFilter.
  • Как строить модульную модель данных в EF Core: IEntityTypeConfiguration, сборка единого контекста, миграции и связи между сущностями разных модулей.
  • Как не сломать архитектуру: Roslyn-анализаторы и проверка зависимостей в рантайме.
  • Как упаковать всё в один Docker-образ с multi-stage build и запускать один или несколько модулей на выбор через переменные окружения.

Результат: вы получите готовую архитектуру, которая одинаково удобна для разработки (F5, отладка, юнит-тесты) и для эксплуатации (один контейнер, масштабирование по модулям). И главное — вы не платите «налог на микросервисы» с первой строчки кода.

Доклад будет полезен архитекторам и lead-разработчикам, которые хотят баланса между монолитом и микросервисами, используя только стандартные возможности .NET.

Спикеры

Доклады