IoC ~ Efektivní Autofac
Není pochyb o tom, že oblíbeným IoC kontejnerem Microsoftu není spring.net, Unity, ale Autofac, kvůli jeho efektivitě a jednoduchosti, takže se používá i pro projekty sadů vedené Microsoftem
ilustruje použití Autofacu.
Řekněme to teď:
V příští přednášce budu hovořit o využití Autofacu v konkrétních projektech pro projekty sadů.
Teď se podívejte na jeho životní cyklus
1、InstancePerDependency
Vytvořte novou unikátní instanci pro každou závislost nebo volání. Toto je také výchozí způsob vytváření instancí.
Oficiální dokumentace vysvětluje: Nastavte komponentu tak, aby každá závislá komponenta nebo volání Resolve() dostalo novou, unikátní instanci (výchozí).
2、InstancePerLifetimeScope
V doméně životního cyklu každá závislost nebo volání vytváří jednu sdílenou instanci a pro každou jinou doménu životního cyklu je instance jedinečná a není sdílená.
Oficiální dokumentace vysvětluje: Nakonfigurujte komponentu tak, aby každá závislá komponenta nebo volání Resolve() v rámci jednoho ILifetimeScope dostávalo stejnou sdílenou instanci. Závislé komponenty v různých životnostních rozsahech dostanou různé instance.
3、InstancePerMatchingLifetimeScope
V identifikované doméně životního cyklu každá závislost nebo volání vytváří jednu sdílenou instanci. Instance v mateřské doméně mohou být sdíleny v podřízené identitní doméně identifikované životní cyklické domény. Pokud v celé hierarchii dědičnosti není nalezena žádná identifikovaná doména životního cyklu, je vyhozena výjimka: DependencyResolutionException.
Oficiální dokumentace vysvětluje: Nakonfigurujte komponentu tak, aby každá závislá komponenta nebo volání Resolve() v rámci ILifetimeScope označeného některou z daných tagů dostala stejnou sdílenou instanci. Závislé komponenty v celoživotních rozsahech, které jsou potomky označeného rozsahu, sdílejí instanci rodiče. Pokud v hierarchii není nalezen vhodný označený rozsah, je vyhozena výjimka DependencyResolution.
4、InstancePerOwned
V životním cyklu instance vytvořené instancí vlastněnou v doméně životního cyklu každá závislá komponenta nebo volání metody Resolve() vytváří jednu sdílenou instanci a doména dětského životního cyklu sdílí instance v doméně životního cyklu rodiče. Pokud v hierarchii dědičnosti není nalezena vhodná doména životního cyklu s podřízenými instancemi, je vyhodena výjimka: DependencyResolutionException.
Oficiální dokumentace vysvětluje:
Nakonfigurujte komponentu tak, aby každá závislá komponenta nebo volání Resolve() v rámci ILifetimeScope vytvořeného vlastněnou instancí dostalo stejnou sdílenou instanci. Závislé komponenty v celoživotních rozsahech, které jsou potomky vlastněného rozsahu instance, budou sdílet instanci rodiče. Pokud v hierarchii není nalezen vhodný rozsah vlastněné instance, je vyhodena výjimka DependencyResolution.
5、SingleInstance
Pokaždé, když spoléháte na komponentu nebo voláte metodu Resolve(), dostanete stejnou sdílenou instanci. Ve skutečnosti je to model s jedním modelem.
Oficiální dokumentace vysvětluje: Nakonfigurujte komponentu tak, aby každá závislá komponenta nebo volání Resolve() dostávalo stejnou sdílenou instanci.
6、InstancePerHttpRequest
V kontextu HTTP požadavku sdílejte instanci komponenty. Dostupné pouze pro vývoj asp.net MVC.
|