IoC ~ Efficient Autofac
Det råder ingen tvekan om att Microsofts favorit-IoC-container inte är spring.net, Unity, utan Autofac, på grund av dess effektivitet, dess enkelhet, så den används också för Microsoft-ledda fruktträdgårdsprojekt
illustrerar användningen av en Autofac.
Låt oss säga det nu:
I nästa föreläsning kommer jag att prata om användningen av Autofac i specifika projekt för fruktträdgårdsprojekt.
Titta nu på dess livscykel
1、InstancePerDependency
Skapa en ny unik instans för varje beroende eller anrop. Detta är också standardsättet att skapa instanser.
Officiell dokumentation förklarar: Konfigurera komponenten så att varje beroende komponent eller anrop till Resolve() får en ny, unik instans (standard).
2、InstancePerLifetimeScope
I en livscykeldomän skapar varje beroende eller anrop en enda delad instans, och för varje olika livscykeldomän är instansen unik och inte delad.
Officiell dokumentation förklarar: Konfigurera komponenten så att varje beroende komponent eller anrop till Resolve() inom en enda ILifetimeScope får samma, delade instans. Beroende komponenter i olika livslängdsscopes får olika instanser.
3、InstancePerMatchingLifetimeScope
I en identifierad livscykeldomän skapar varje beroende eller anrop en enda delad instans. Instanser i föräldradomänen kan delas i barnidentitetsdomänen för den identifierade livscykeldomänen. Om ingen identifierad livscykeldomän hittas i hela arvshierarkin kastas ett undantag: DependencyResolutionException.
Officiell dokumentation förklarar: Konfigurera komponenten så att varje beroende komponent eller anrop till Resolve() inom en ILifetimeScope taggad med någon av de tillhandahållna taggarna får samma delade instans. Beroende komponenter i livstidsscopes som är barn till det taggade scope delar förälderns instans. Om inget lämpligt taggat scope kan hittas i hierarkin kastas en DependencyResolutionException.
4、InstancePerOwned
I livscykeln för en instans skapad av en instans som ägs i en livscykeldomän, skapar varje beroende komponent eller anrop till Resolve()-metoden en enda delad instans, och den barnliga livscykeldomänen delar instanserna i den föräldrabaserade livscykeldomänen. Om ingen lämplig livscykeldomän med barninstanser hittas i arvshierarkin kastas ett undantag: DependencyResolutionException.
Den officiella dokumentationen förklarar:
Konfigurera komponenten så att varje beroende komponent eller anrop till Resolve() inom en ILifetimeScope skapad av en ägd instans får samma, delade instans. Beroende komponenter i livstidsscopes som är barn till den ägda instansens scope kommer att dela förälderns instans. Om ingen lämplig ägd instans kan hittas i hierarkin kastas en DependencyResolutionException.
5、SingleInstance
Varje gång du förlitar dig på en komponent eller anropar Resolve()-metoden får du samma delade instans. Faktum är att det är en singelmodell.
Officiell dokumentation förklarar: Konfigurera komponenten så att varje beroende komponent eller anrop till Resolve() får samma, delade instans.
6、InstancePerHttpRequest
I sammanhanget av en Http-förfrågan, dela en instans av en komponent. Endast tillgänglig för asp.net MVC-utveckling.
|