Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 36245|Отговор: 1

[.NET Core] ASP.NET Core dependency injection използва IOC контейнера, който идва с нея

[Копирай линк]
Публикувано в 7.05.2019 г. 13:55:10 ч. | | | |
ASP.NET Core dependency injection използва 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 се използват голям брой инжекции на зависимости за писане на код.

Например, в нашия клас Startup можем да видим следното:

AddMvc AddDbContext включва AddDirectoryBrowser, който използвахме за обиколки на директории преди:

Всички те са рамки, които предоставят качествени услуги, и можем да ги използваме директно, като ги инжектираме.

Обръщането на контрола (IoC) е принцип на проектиране в обектно-ориентираното програмиране, който може да се използва за намаляване на връзката между компютърния код. Най-често срещаният метод се нарича Dependency Injection (DI), а съществува и метод, наречен "Dependency Lookup". Чрез контрол на инверсията, когато се създаде обект, външна единица, която контролира всички обекти в системата, му предава препратка към обекта, от който зависи. Може също да се каже, че зависимости се инжектират в обекта.

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

Инжектиране на жизнения цикъл на услуга

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

Преходен

Мигновена услуга за жизнения цикъл, която се създава всеки път, когато бъде поискана. Този жизнен цикъл е най-подходящ за леки, безграждански услуги.

Обхват

В същия обхват услугата се създава само веднъж на заявка.

Сингълтън (само)

Глобалният файл се създава само веднъж, първия път, когато се иска, и след това винаги се използва.

Как използвате тези три жизнени цикъла? Можем да използваме различни методи директно при инжектиране, кодът е следният:


Нека тестваме конкретното поколение на тези три жизнени цикъла

Пишем три интерфейса с различни имена и 3 различни класа, за да реализираме интерфейсите, както следва:

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

Инжектиране на услуги в контролера

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

Преглед на кода на страницата:

Стартирайте проекта и го достъпете през два различни браузъра, както е показано по-долу:



Открихме, че GUID-ите, генерирани два пъти в мигновения жизнен цикъл, са несъвместими, което показва, че обектът не е същият.

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

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

(Край)






Предишен:.NET Core Entity използва Entity Framework Core за свързване на бази данни
Следващ:ASP.NET Core използва Autofac за реализиране на IOC инжекция
 Хазяин| Публикувано в 9.03.2022 г. 11:00:35 ч. |
Замяна на услуги в вградените DI контейнери на ASP.NET Core

Код:





Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com