Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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 за замовчуванням використовує ін'єкцію конструктора (Ін'єкція атрибутів не підтримується, але це можливо за допомогою заміни стороннього контейнера)

Переглянути код сторінки:

Запустіть проєкт і отримуйте доступ до нього через 2 різні браузери, як показано нижче:



Ми виявили, що 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