IoC ~ Efektywny Autofac
Nie ulega wątpliwości, że ulubionym kontenerem IoC Microsoftu nie jest spring.net, Unity, lecz Autofac, ze względu na jego efektywność i prostotę, dlatego jest także wykorzystywany w projektach sadowniczych prowadzonych przez Microsoft
ilustruje użycie Autofac.
Nazwijmy to teraz:
W następnym wykładzie opowiem o wykorzystaniu Autofac w konkretnych projektach dotyczących sadów.
Teraz spójrz na jego cykl życia
1、InstancePerDependency
Stwórz nową, unikalną instancję dla każdej zależności lub wywołania. To także domyślny sposób tworzenia instancji.
Oficjalna dokumentacja wyjaśnia: Konfiguruj komponent tak, aby każdy zależny komponent lub wywołanie Resolve() otrzymywało nową, unikalną instancję (domyślnie).
2、InstancePerLifetimeScope
W domenie cyklu życia każda zależność lub wywołanie tworzy jedną wspólną instancję, a dla każdej domeny cyklu życia jest ona unikalna i nie jest współdzielona.
Oficjalna dokumentacja wyjaśnia: Konfiguruj komponent tak, aby każdy zależny komponent lub wywołanie Resolve() w ramach jednego ILifetimeScope otrzymywało tę samą, współdzieloną instancję. Zależne komponenty w różnych zakresach życia będą miały różne instancje.
3、InstancjaDopasowanieZakresu życia
W zidentyfikowanej domenie cyklu życia każda zależność lub wywołanie tworzy jedną wspólną instancję. Instancje w domenie nadrzędnej mogą być współdzielone w domenie tożsamości potomnej zidentyfikowanej domeny cyklu życia. Jeśli w całej hierarchii dziedziczenia nie znaleziono zidentyfikowanej domeny cyklu życia, wyrzucany jest wyjątek: DependencyResolutionException.
Oficjalna dokumentacja wyjaśnia: Konfiguruj komponent tak, aby każdy zależny komponent lub wywołanie Resolve() w obrębie ILifetimeScope oznaczonego dowolnym z podanych tagów otrzymało tę samą, współdaną instancję. Komponenty zależne w zakresach życiowych, które są dziećmi zakresu oznaczonego, będą współdzielić instancję nadrzędnego. Jeśli w hierarchii nie można znaleźć odpowiednio oznaczonego zakresu, rzucany jest wyjątek DependencyResolution.
4、InstancePerOwned
W cyklu życia instancji utworzonej przez instancję należącą do domeny cyklu życia, każdy zależny komponent lub wywołanie metody Resolve() tworzy jedną współdzieloną instancję, a domena dziecka cyklu życia dzieli instancje z domeny cyklu życia nadrzędnego. Jeśli w hierarchii dziedziczenia nie znajduje się odpowiedniej domeny cyklu życia z instancjami potomnymi, wyrzuca się wyjątek: DependencyResolutionException.
Oficjalna dokumentacja wyjaśnia:
Skonfiguruj komponent tak, aby każdy zależny komponent lub wywołanie Resolve() w ramach ILifetimeScope utworzonego przez własną instancję otrzymało tę samą, współdzieloną instancję. Komponenty zależne w zakresach życiowych, które są potomkami zakresu własnej instancji, będą współdzielić instancję nadrzędnego. Jeśli w hierarchii nie można znaleźć odpowiedniego zakresu własnej instancji, wyrzucany jest wyjątek DependencyResolution.
5、SingleInstance
Za każdym razem, gdy polegasz na komponentie lub wywołujesz metodę Resolve(), otrzymujesz tę samą współdzieloną instancję. W rzeczywistości jest to model singleton.
Oficjalna dokumentacja wyjaśnia: Skonfiguruj komponent tak, aby każdy zależny komponent lub wywołanie Resolve() otrzymywało tę samą, współdzieloną instancję.
6、InstancePerHttpRequest
W kontekście żądania HTTP udostępnij instancję komponentu. Dostępne tylko do rozwoju asp.net MVC.
|