Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 36245|Odpowiedź: 1

[.NET Core] ASP.NET Core dependency injection wykorzystuje dołączony kontener IOC

[Skopiuj link]
Opublikowano 07.05.2019 13:55:10 | | | |
ASP.NET Core dependency injection wykorzystuje dołączony kontener IOC
https://www.itsvse.com/thread-7562-1-1.html
(Źródło: Architect_Programmer)

ASP.NET Core wykorzystuje Autofac do implementacji wstrzyknięcia IOC
https://www.itsvse.com/thread-7563-1-1.html
(Źródło: Architect_Programmer)

ASP.NET Core wykorzystuje Autofac do implementacji przechwytywania AOP
https://www.itsvse.com/thread-7566-1-1.html
(Źródło: Architect_Programmer)

W nowym ASP.NET Core do pisania kodu używa się dużej liczby wstrzyknięć zależności.

Na przykład na naszych zajęciach o startupach możemy zobaczyć następujące rzeczy:

AddMvc AddDbContext zawiera AddDirectoryBrowser, którego używaliśmy do zwiedzania katalogów wcześniej:

To wszystkie ramy, które oferują dobre usługi i możemy z nich korzystać bezpośrednio, wprowadzając je.

Odwrócenie sterowania (IoC) to zasada projektowania w programowaniu obiektowym, która może być użyta do ograniczenia sprzężenia między kodem komputerowym. Najczęściej spotykaną metodą jest wstrzykiwanie zależności (DI), a istnieje także metoda "Dependency Lookup". Kontrolując inwersję, gdy obiekt jest tworzony, zewnętrzny podmiot kontrolujący wszystkie obiekty w systemie przekazuje mu referencję do obiektu, od którego zależy. Można też powiedzieć, że do obiektu wprowadzane są zależności.

Aby użyć IOC, klasa Startup musi odwołać się do Microsoft.Extensions.DependencyInjection(ps), co jest już dość proste: Microsoft... Rozwiń... Zastrzyk zależności - - ,)

Wstrzyknięcie cyklu życia usługi

Microsoft udostępnia 3 cykle życia dla usług samowstrzykowych.

Przejściowe

Natychmiastowa usługa cyklu życia, tworzona za każdym razem, gdy jest o nią zamawiana. Ten cykl życia najlepiej nadaje się do lekkich, bezstanowych usług.

Scoped

W tym samym zakresie usługa jest tworzona tylko raz na każde żądanie.

Singleton (tylko)

Globalny jest tworzony tylko raz, za pierwszym razem, gdy jest żądany, i wtedy jest zawsze używany.

Jak wykorzystujesz te trzy cykle życia? Możemy stosować różne metody bezpośrednio podczas wstrzykiwania, kod wygląda następująco:


Przetestujmy konkretne generowanie tych trzech cykli życia

Piszemy trzy interfejsy o różnych nazwach i 3 różne klasy, aby je zaimplementować, w następujący sposób:

W konstruktorze każdej klasy implementacyjnej generujemy nowy GUID, który pozwala nam określić, czy klasa ponownie wykonała konstruktor.

Wstrzyknięcie usług do kontrolera

Zazwyczaj istnieją trzy sposoby wstrzykiwania: injectacja konstruktorowa, metoda iniekcji oraz iniekcja atrybutów. Własny kontener IOC Microsoftu domyślnie używa wstrzyknięcia konstruktorów (Wstrzykiwanie atrybutów nie jest obsługiwane, ale można to osiągnąć za pomocą zewnętrznego zastępstwa kontenera)

Zobacz kod strony:

Uruchom projekt i uzyskaj dostęp do niego przez 2 różne przeglądarki, jak pokazano poniżej:



Stwierdziliśmy, że GUIDy generowane dwukrotnie w bieżącym cyklu życia są niespójne, co wskazuje, że obiekt nie jest taki sam.

Jednak cykl życia zakresu jest taki sam, ponieważ w tym samym zakresie GUID usługi użytej dwukrotnie w tej samej przeglądarce jest taki sam, co wskazuje, że użyty jest ten sam obiekt.

W przypadku singletona dwie różne przeglądarki zawsze mają dostęp do tego samego GUID, co oznacza, że wywoływany jest ten sam obiekt.

(Koniec)






Poprzedni:.NET Core Entity wykorzystuje Entity Framework Core do łączenia baz danych
Następny:ASP.NET Core wykorzystuje Autofac do implementacji wstrzyknięcia IOC
 Ziemianin| Opublikowano 09.03.2022 11:00:35 |
Zastąpienie usług w wbudowanych kontenerach DI ASP.NET Core

Kod:





Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com