IoC ~ Efektívny Autofac
Niet pochýb, že obľúbeným IoC kontajnerom Microsoftu nie je spring.net, Unity, ale Autofac, kvôli jeho efektivite a jednoduchosti, takže sa používa aj pre projekty sadov vedené Microsoftom
ilustruje použitie Autofacu.
Nazvime to teraz:
V ďalšej prednáške budem hovoriť o využití Autofac v konkrétnych projektoch pre ovocné projekty.
Teraz sa pozrite na jeho životný cyklus
1、InstancePerDependency
Vytvorte novú jedinečnú inštanciu pre každú závislosť alebo volanie. Toto je tiež predvolený spôsob vytvárania inštancií.
Oficiálna dokumentácia vysvetľuje: Nakonfigurujte komponent tak, aby každý závislý komponent alebo volanie Resolve() dostalo novú, jedinečnú inštanciu (predvolené).
2、PrípadPerLifetimeScope
V doméne životného cyklu každá závislosť alebo volanie vytvára jednu zdieľanú inštanciu a pre každú inú doménu životného cyklu je inštancia jedinečná a nie je zdieľaná.
Oficiálna dokumentácia vysvetľuje: Nakonfigurujte komponent tak, aby každá závislá komponenta alebo volanie Resolve() v rámci jedného ILifetimeScope dostalo rovnakú zdieľanú inštanciu. Závislé komponenty v rôznych životnostných rozsahoch dostanú rôzne inštancie.
3、PrípadZodpovedanieŽivotného rozsahu
V identifikovanej doméne životného cyklu každá závislosť alebo volanie vytvára jednu zdieľanú inštanciu. Inštancie v rodičovskej doméne môžu byť zdieľané v podriadenej identitnej doméne identifikovanej domény životného cyklu. Ak sa v celej hierarchii dedičnosti nenájde žiadna identifikovaná doména životného cyklu, vyhodí sa výnimka: DependencyResolutionException.
Oficiálna dokumentácia vysvetľuje: Nakonfigurujte komponent tak, aby každý závislý komponent alebo volanie Resolve() v rámci ILifetimeScope označeného ktoroukoľvek z daných hodnôt tagov dostalo rovnakú zdieľanú inštanciu. Závislé komponenty v celoživotných rozsahoch, ktoré sú potomkami označeného rozsahu, budú zdieľať inštanciu rodiča. Ak sa v hierarchii nenájde vhodný označený rozsah, vyhodí sa DependencyResolutionException.
4、InstancePerOwned
V životnom cykle inštancie vytvorenej inštanciou vlastnenou v doméne životného cyklu každá závislá komponenta alebo volanie metódy Resolve() vytvára jednu spoločnú inštanciu a doména životného cyklu dieťaťa zdieľa inštancie v doméne rodičovského životného cyklu. Ak sa v hierarchii dedičnosti nenájde vhodná doména životného cyklu s podinštanciami, vyhodí sa výnimka: DependencyResolutionException.
Oficiálna dokumentácia vysvetľuje:
Nakonfigurujte komponent tak, aby každá závislá komponenta alebo volanie Resolve() v rámci ILifetimeScope vytvoreného vlastnenou inštanciou dostalo rovnakú zdieľanú inštanciu. Závislé komponenty v celoživotných rozsahoch, ktoré sú potomkami vlastneného rozsahu inštancie, budú zdieľať inštanciu rodiča. Ak sa v hierarchii nenájde vhodný rozsah vlastnej inštancie, vyhodí sa DependencyResolutionException.
5、SingleInstance
Vždy, keď sa spoliehate na komponent alebo voláte metódu Resolve(), dostanete rovnakú zdieľanú inštanciu. V skutočnosti ide o model s jedným procesorom.
Oficiálna dokumentácia vysvetľuje: Nakonfigurujte komponent tak, aby každý závislý komponent alebo volanie Resolve() dostalo rovnakú zdieľanú inštanciu.
6、InstancePerHttpRequest
V kontexte HTTP požiadavky zdieľajte inštanciu komponentu. Dostupné len pre vývoj asp.net MVC.
|