Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 36245|Răspunde: 1

[.NET Core] ASP.NET Core dependency injection folosește containerul IOC care vine cu ea

[Copiază linkul]
Postat pe 07.05.2019 13:55:10 | | | |
ASP.NET Core dependency injection folosește containerul IOC care vine cu ea
https://www.itsvse.com/thread-7562-1-1.html
(Sursa: Architect_Programmer)

ASP.NET Core folosește Autofac pentru a implementa injectarea IOC
https://www.itsvse.com/thread-7563-1-1.html
(Sursa: Architect_Programmer)

ASP.NET Core folosește Autofac pentru a implementa interceptarea AOP
https://www.itsvse.com/thread-7566-1-1.html
(Sursa: Architect_Programmer)

În noul ASP.NET Core, un număr mare de injecții de dependență sunt folosite pentru scrierea codului.

De exemplu, în clasa noastră Startup, putem vedea următoarele:

AddMvc AddDbContext include AddDirectoryBrowser pe care îl foloseam pentru tururile directoarelor înainte:

Toate sunt cadre care oferă servicii bune și le putem folosi direct injectându-le.

Inversarea controlului (IoC) este un principiu de proiectare în programarea orientată pe obiecte care poate fi folosit pentru a reduce cuplarea dintre codurile de calculator. Cea mai comună metodă se numește Injecția de Dependență (DI), iar există și o metodă numită "Căutare a dependenței". Prin controlul inversiunii, atunci când un obiect este creat, o entitate externă care controlează toate obiectele din sistem îi transmite o referință la obiectul de care depinde. Se poate spune, de asemenea, că dependențele sunt injectate în obiect.

Pentru a folosi ioc-ul, clasa Startup trebuie să facă referire la Microsoft.Extensions.DependencyInjection(ps, ceea ce este deja destul de simplu: Microsoft... Extinde... Injectarea dependenței - - ,)

Injectează ciclul de viață al unui serviciu

Microsoft oferă 3 cicluri de viață pentru servicii auto-injectate.

Tranzitoriu

Un serviciu instantaneu de ciclu de viață creat de fiecare dată când este solicitat. Acest ciclu de viață este cel mai potrivit pentru servicii ușoare, fără stat.

Domeniu de aplicare

În același domeniu, serviciul este creat o singură dată pe cerere.

Singleton (Doar)

Globalul este creat o singură dată, prima dată când este solicitat, și apoi este folosit întotdeauna.

Cum folosești aceste trei cicluri de viață? Putem folosi metode diferite direct la injectare, codul fiind următorul:


Să testăm generarea specifică a acestor trei cicluri de viață

Scriem trei interfețe cu nume diferite și 3 clase diferite pentru a implementa interfețele, după cum urmează:

În constructorul fiecărei clase de implementare, generăm un nou GUID, care ne permite să determinăm dacă clasa a reexecutat constructorul.

Injectează servicii în controler

În general, există trei moduri de injectare: injecția constructorului, injecția prin metodă și injectarea atributelor. Containerul IOC propriu al Microsoft folosește implicit injecția constructorului (Injectarea de atribute nu este suportată, dar poate fi realizată cu înlocuirea containerului de către terți)

Vezi codul paginii:

Rulează proiectul și accesează-l prin două browsere diferite, așa cum se arată mai jos:



Am constatat că GUID-urile generate de două ori în ciclul instantaneu de viață sunt inconsistente, indicând că obiectul nu este același.

Totuși, ciclul de viață al scopului este același, deoarece sub același scop, GUID-ul serviciului folosit de două ori în același browser este același, indicând că același obiect este folosit.

În cazul unui singleton, două browsere diferite accesează întotdeauna același GUID, indicând că același obiect este apelat.

(Sfârșit)






Precedent:.NET Core Entity folosește Entity Framework Core pentru a lega baze de date
Următor:ASP.NET Core folosește Autofac pentru a implementa injectarea IOC
 Proprietarul| Postat pe 09.03.2022 11:00:35 |
Înlocuirea serviciilor din containerele DI încorporate ale ASP.NET Core

Cod:





Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com