Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 36245|Ответ: 1

[.NET Core] ASP.NET Инъекция зависимостей ядра использует контейнер IOC, который идёт в комплекте

[Скопировать ссылку]
Опубликовано 07.05.2019 13:55:10 | | | |
ASP.NET Инъекция зависимостей ядра использует контейнер IOC, который идёт в комплекте
https://www.itsvse.com/thread-7562-1-1.html
(Источник: Architect_Programmer)

ASP.NET Core использует Autofac для реализации инжекции IOC
https://www.itsvse.com/thread-7563-1-1.html
(Источник: Architect_Programmer)

ASP.NET Core использует Autofac для реализации перехвата AOP
https://www.itsvse.com/thread-7566-1-1.html
(Источник: Architect_Programmer)

В новом ASP.NET Core используется большое количество инъекций зависимостей для написания кода.

Например, в нашем курсе «Стартап» мы видим следующее:

AddMvc AddDbContext включает AddDirectoryBrowser, который мы использовали для экскурсий по каталогам:

Все они — это фреймворки, которые предоставляют качественные услуги, и мы можем использовать их напрямую, внедряя в них.

Инверсия управления (IoC) — это принцип проектирования объектно-ориентированного программирования, который может использоваться для уменьшения взаимодействия между компьютерным кодом. Самый распространённый метод называется Dependency Injection (DI), а также существует метод под названием «Dependency Lookup». Контролируя инверсию, при создании объекта внешняя сущность, управляющая всеми объектами системы, передаёт ему ссылку на объект, от которого она зависит. Также можно сказать, что в объект вводятся зависимости.

Чтобы использовать ioc, класс Startup должен ссылаться на Microsoft.Extensions.DependencyInjection(ps), что уже довольно просто: Microsoft... Расширяй... Инъекция зависимостей - - ,)

Инжекция жизненного цикла сервиса

Microsoft предоставляет 3 жизненных цикла для сервисов с самоинъекцией.

Временные

Мгновенный сервис жизненного цикла, который создаётся каждый раз при запросе. Этот жизненный цикл лучше всего подходит для лёгких услуг без статуса.

Область действия

В том же масштабе сервис создаётся только один раз за каждый запрос.

Singleton (Only)

Глобальный файл создаётся только один раз — при первом запросе, после чего он всегда используется.

Как использовать эти три жизненных цикла? При инъекции можно использовать разные методы напрямую, код таков:


Давайте проверим конкретное поколение этих трёх жизненных циклов

Мы пишем три интерфейса с разными названиями и тремя классами для реализации интерфейсов, следующим образом:

В конструкторе каждого класса реализации мы генерируем новый GUID, который позволяет определить, был ли класс повторно выполнен конструктор.

Инжекция сервисов в контроллер

Обычно существует три способа инъекции: инъекции конструктора, методная инъекция и атрибутная инъекция. Собственный IOC-контейнер Microsoft по умолчанию использует инъекцию конструкторов (Инъекция атрибутов не поддерживается, но это возможно с помощью замены контейнера третьей стороны)

Код просмотра страницы:

Запустите проект и получите доступ к нему через два разных браузера, как показано ниже:



Мы обнаружили, что GUID, генерируемые дважды за мгновенный жизненный цикл, непоследовательны, что указывает на то, что объект отличается от одного и того же.

Однако жизненный цикл области одинаков, потому что при одной области GUID сервиса, используемого дважды в одном браузере, совпадает с тем же объектом, что указывает на использование одного и того же объекта.

В случае синглтона два разных браузера всегда обращаются к одному и тому же GUID, что указывает на вызов одного и того же объекта.

(Конец)






Предыдущий:.NET Core Entity использует Entity Framework Core для связывания баз данных
Следующий:ASP.NET Core использует Autofac для реализации инжекции IOC
 Хозяин| Опубликовано 09.03.2022 11:00:35 |
Замена сервисов в встроенных DI-контейнерах ASP.NET Core

Код:





Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com