|
|
Publicēts 07.05.2019 13:55:10
|
|
|
|

Jaunajā ASP.NET Core koda rakstīšanai tiek izmantots liels skaits atkarības injekciju.
Piemēram, mūsu startēšanas klasē mēs varam redzēt:
AddMvc AddDbContext ietver AddDirectoryBrowser, ko mēs izmantojām direktoriju ekskursijām iepriekš:
Tie visi ir ietvari, kas sniedz labus pakalpojumus, un mēs varam tos izmantot tieši, injicējot tos.
Vadības inversija (IoC) ir objektorientētās programmēšanas dizaina princips, ko var izmantot, lai samazinātu saikni starp datora kodu. Visizplatītākā metode tiek saukta par atkarības injekciju (DI), un ir arī metode ar nosaukumu "Atkarības meklēšana". Kontrolējot inversiju, kad tiek izveidots objekts, ārēja vienība, kas kontrolē visus sistēmas objektus, nodod tai atsauci uz objektu, no kura tā ir atkarīga. Var arī teikt, ka objektā tiek ievadītas atkarības. Lai izmantotu ioc, startēšanas klasei ir jāatsaucas uz Microsoft.Extensions.DependencyInjection(ps, kas jau ir diezgan vienkārši: Microsoft.. Izvērst... Atkarības injekcija - - ,)
Pakalpojuma dzīves cikla ievadīšana
Microsoft nodrošina 3 dzīves ciklus pašinjicētiem pakalpojumiem.
Pārejošs
Tūlītējs dzīves cikla pakalpojums, kas tiek izveidots katru reizi, kad tas tiek pieprasīts. Šis dzīves cikls ir vislabāk piemērots viegliem, bezvalstniekiem pakalpojumiem.
Darbības joma
Tajā pašā tvērumā pakalpojums tiek izveidots tikai vienu reizi vienā pieprasījumā.
Singleton (tikai)
Globālais tiek izveidots tikai vienu reizi, pirmo reizi, kad tas tiek pieprasīts, un pēc tam tas vienmēr tiek izmantots.
Kā jūs izmantojat šos trīs dzīves ciklus? Mēs varam izmantot dažādas metodes tieši injicējot, kods ir šāds:
Pārbaudīsim šo trīs dzīves ciklu īpašo paaudzi
Mēs rakstām trīs saskarnes ar dažādiem nosaukumiem un 3 dažādām klasēm, lai ieviestu saskarnes, šādi:
Katras ieviešanas klases konstruktorā mēs ģenerējam jaunu GUID, kas ļauj noteikt, vai klase ir atkārtoti izpildījusi konstruktoru.
Ievadiet pakalpojumus kontrolierī
Parasti ir trīs injekcijas veidi: konstruktora injekcija, metodes injekcija un atribūtu injekcija. Microsoft paša IOC konteiners pēc noklusējuma izmanto konstruktora injekciju (Atribūta injekcija netiek atbalstīta, bet to var panākt ar trešās puses konteinera nomaiņu)
Skatīt lapas kodu:
Palaidiet projektu un piekļūstiet tam, izmantojot 2 dažādas pārlūkprogrammas, kā parādīts zemāk:
Mēs atklājām, ka momentānā dzīves ciklā divreiz ģenerētie GUID ir nekonsekventi, norādot, ka objekts nav vienāds.
Tomēr tvēruma dzīves cikls ir tāds pats, jo vienā un tajā pašā tvērumā divreiz vienā pārlūkprogrammā izmantotā pakalpojuma GUID ir vienāds, norādot, ka tiek izmantots viens un tas pats objekts.
Vientuļa gadījumā divas dažādas pārlūkprogrammas vienmēr piekļūst vienam un tam pašam GUID, norādot, ka tiek izsaukts viens un tas pats objekts.
(Beigas)
|
Iepriekšējo:.NET Core Entity izmanto Entity Framework Core, lai saistītu datu bāzesNākamo:ASP.NET Core izmanto Autofac, lai ieviestu SOK injekciju
|