Dependency Injection в Net 6 — время жизни службы

Dependency Injection

Этот пост является третьей частью серии из трех частей, посвященных внедрению зависимостей в .NET 6. Возможно, вы захотите сначала прочитать часть 1 и часть 2.

Чтобы завершить серию статей о внедрении зависимостей (Dependency Injection) в .NET 6, давайте обсудим, как контейнер создает отдельные зависимости. Способ, благодаря которому это происходит, называется временем жизни службы зависимости.

В .NET 6 реализовано три срока службы службы:

  • Переходный (Transied)
  • Область применения (Scoped)
  • Синглтон (Singleton)

У каждого из них свой вариант использования, и каждый соответствует определенному типу зависимости. Начнем с наиболее распространенного срока службы: Transied.

(далее…)

Выполнение кода перед Main в .NET

Метод Main — это точка входа приложения C#. (Библиотекам и службам точка входа в виде метода Main не требуется.) Когда приложение запускается, первым вызывается именно метод Main.

Официальная Документация

На самом деле метод Main может быть не первым методом сборки, который будет выполняться при запуске приложения. Существуют различные методы, которые могут выполняться перед методом Main. В этом посте я покажу вам различные способы выполнения кода перед методом Main. Я не говорю, что так нужно делать, только то, что это возможно 😃

(далее…)

Dependency injections в .NET 6 — добавление и внедрение зависимостей

Этот пост является второй частью серии из трех частей. Возможно, вы захотите сначала прочитать часть 1.

Из предыдущего поста этой серии мы знаем, что для того, чтобы сделать зависимость доступной для внедрения в другой объект кода, зависимость должна:

  • Иметь абстракцию (чаще всего интерфейс)
  • Быть вставленной в .Net контейнер

Мы знаем, как сделать первую часть; нам нужно создать абстракцию (чаще всего интерфейс) для любого класса, который мы хотим внедрить как зависимость. В этой серии мы используем класс MovieRepository и интерфейс IMovieRepository со следующими методами:

(далее…)

Внедрение зависимостей (Dependency Injection)в .NET 6

Добро пожаловать в новую серию! Мы собираемся углубиться в то, как .NET реализует внедрение зависимостей (Dependency injection или, если кратко DI), и как мы можем использовать его, чтобы сделать наши приложения более удобными для изменений. Приступим!

(далее…)

Версионирование REST API в ASP.NET Core

DotNetT2 Light_1200x303

Начиная с ASP.NET Core 3.1, у вас есть возможность изменять версии своих API с помощью пакета Microsoft NuGet. Сегодня мы научимся использовать этот пакет для простого создания версий ваших API.

Размещая API, вы приглашаете разработчиков использовать его на основании согласованного контракта. Что будет, если контракт изменится? Давайте посмотрим на простой пример.

Если я вызову API с URL-адресом https://mybandapi.com/api/bands/4, я получу следующий ответ:

{
   "id": 4,
   "name": "The Eagles, man"
}

Теперь предположим, что я решил обновить свою схему API новым полем YearFounded. Вот как теперь выглядит новый ответ:

{
   "id": 4,
   "name": "The Eagles, man",
   "YearFounded": 1971
}

С этим новым полем существующие клиенты по-прежнему будут работать. Это не серьезное изменение, поскольку существующие приложения могут его игнорировать. Вы, конечно же, должны задокументировать новое поле в «Долгой перспективе», но в конечном итоге это не так уж важно.

Допустим, вы хотите, чтобы name стало набором names, связанных с группой, например:

{
   "id": 4,
   "names": 
   [
     "The Eagles, man",
     "The Eagles"
   ],
   "FoundedYear": 1971
}

Вы внесли критическое изменение. Пользователи вашего API ожидали, что поле name будет строковым значением, а теперь вы возвращаете набор строк. В результате, когда потребители вызывают API, их приложения не будут работать, как предполагалось, и ваши пользователи , будут не довольны.

Ваши пользователи должны знать, чего ожидать, будь то небольшое изменение, которое не нарушает правила, или изменение, которое что-то ломает. Чтобы помочь управлять развивающимися API, вам понадобится стратегия управления версиями API.

Начиная с ASP.NET Core 3.1, Microsoft предоставляет библиотеки для помощи в управлении версиями API. Они предоставляют простой и эффективный способ добавления семантики управления версиями к вашим службам REST, а также соответствуют рекомендациям Microsoft REST Guidelines.

В этом посте я покажу вам, как можно использовать пакет NuGet Microsoft.AspNetCore.Mvc.Versioning для применения управления версиями API к веб-API REST ASP.NET Core. (далее…)