ASP.NET Core
Конвейер middleware, DI и время жизни сервисов, Minimal API и контроллеры, фильтры, аутентификация, конфигурация, логирование, SignalR и gRPC.
ASP.NET Core — это прежде всего конвейер обработки запроса и контейнер зависимостей. Если вы уверенно рисуете путь HTTP-запроса от Kestrel до контроллера и обратно и понимаете время жизни сервисов, большинство остальных вопросов раздела становятся частными случаями.
- 1 HTTP и REST API: методы, статус-коды, заголовки, идемпотентность? HTTP — текстовый протокол «запрос → ответ». Запрос: метод, URL, заголовки, необязательное тело. Ответ: статус-код, заголовки, тело (чаще JSON). REST — стиль API: ресурсы… Junior7 мин
- 2 Жизненный цикл HTTP-запроса в ASP.NET Core: middleware pipeline? Запрос принимает Kestrel, создаёт HttpContext и передаёт его в конвейер middleware — цепочку компонентов, каждый из которых может обработать запрос, передать дальше (awa… Junior6 мин
- 3 Как работает Dependency Injection встроенный в ASP.NET Core? DI — зависимости передаются объекту снаружи (обычно через конструктор), а не создаются внутри через new. Это даёт слабую связанность, тестируемость и управление временем… Junior5 мин
- 4 Scoped vs Transient vs Singleton — разница и ловушки? Singleton — один экземпляр на всё приложение. Должен быть потокобезопасным. Для: кэшей, клиентов (HttpClient через фабрику), конфигурации, TimeProvider. Scoped — один эк… Junior5 мин
- 5 Как работают Minimal API vs Controllers? Оба подхода работают поверх endpoint routing и одного конвейера middleware; различается модель описания эндпоинтов. Controllers (MVC): классы-наследники ControllerBase, … Junior5 мин
- 6 Что такое Filters: Authorization, Action, Result, Exception — порядок выполнения? Фильтры — точки расширения внутри MVC, вокруг выполнения действия контроллера. В отличие от middleware, они знают о контроллере, действии, аргументах, ModelState и резул… Middle6 мин
- 7 Model Binding и Validation: DataAnnotations, FluentValidation? Model binding превращает данные HTTP-запроса (маршрут, query, заголовки, форма, JSON-тело) в параметры действия. Источник задаётся атрибутами [FromRoute], [FromQuery], [… Junior5 мин
- 8 Как настроить CORS и почему это важно? Same-Origin Policy — правило браузера: JavaScript со страницы https://app.example.com не может читать ответы запросов к другому origin (схема + хост + порт), например ht… Junior5 мин
- 9 Authentication vs Authorization: JWT, Cookie, OAuth2 / OIDC? Аутентификация — «кто ты?»: проверка учётных данных/токена и формирование ClaimsPrincipal (HttpContext.User). Ошибка — 401 Unauthorized. Авторизация — «что тебе можно?»:… Middle6 мин
- 10 Что такое ClaimsPrincipal, Identity, Roles vs Policy-based auth? Claim — утверждение о субъекте в виде «тип — значение»: sub=42, email=ann@x.uz, role=Manager, department=Sales. ClaimsIdentity — набор claims, выданный одним источником … Middle6 мин
- 11 Kestrel vs IIS — чем отличаются, как хостировать? Kestrel — встроенный в ASP.NET Core кроссплатформенный веб-сервер. Он есть всегда (кроме in-process режима IIS, где используется IISHttpServer). Быстрый, поддерживает HT… Junior6 мин
- 12 Configuration: appsettings, переменные среды, IOptions<T>, secrets? Конфигурация — набор провайдеров, объединённых в одно дерево «ключ → значение». Порядок по умолчанию: appsettings.json → appsettings.{Environment}.json → User Secrets (D… Junior5 мин
- 13 Logging: ILogger, Serilog, Structured Logging, correlation ID? ILogger<T> — абстракция логирования .NET; реализации (провайдеры) подключаются отдельно: Console, Debug, EventSource, OpenTelemetry, Serilog, NLog. Структурное логирован… Middle6 мин
- 14 Health checks, Liveness vs Readiness probes? Health checks — эндпоинты, по которым оркестратор, балансировщик или мониторинг узнают состояние сервиса. В ASP.NET Core: AddHealthChecks() + MapHealthChecks("/health"),… Middle5 мин
- 15 Как работает SignalR: WebSockets, Long Polling, Server-Sent Events? SignalR — библиотека для двусторонней связи в реальном времени между сервером и клиентами (браузер, .NET, Java, Swift). Абстрагирует транспорт и даёт RPC-модель: сервер … Middle6 мин
- 16 gRPC в .NET — Protobuf, streaming, отличие от REST? gRPC — RPC-фреймворк поверх HTTP/2: контракт описывается в .proto-файле, из него генерируются клиент и сервер (C#, Go, Java, ...). Вызов удалённого сервиса выглядит как … Middle6 мин
- 17 Rate Limiting в ASP.NET Core 7+? Rate limiting ограничивает число запросов за период, чтобы защитить сервис от перегрузки, злоупотреблений (брутфорс, парсинг) и обеспечить справедливое распределение рес… Middle5 мин
- 18 Output Caching vs Response Caching — отличия? Response Caching (UseResponseCaching) — реализует HTTP-кэширование по стандарту: ориентируется на заголовки Cache-Control, Vary; учитывает заголовки клиента (Cache-Contr… Middle6 мин
- 19 Как правильно обрабатывать ошибки: ProblemDetails, middleware, ExceptionHandler? Ошибки обрабатываются централизованно, а не try/catch в каждом контроллере: UseExceptionHandler + IExceptionHandler (.NET 8) — одно место, где исключение превращается в … Middle6 мин