Î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)
|