IoC ~ Tõhus Autofac
Pole kahtlust, et Microsofti lemmik IoC konteiner ei ole spring.net, Unity, vaid Autofac, tänu selle tõhususele ja lihtsusele, mistõttu kasutatakse seda ka Microsofti juhitud õunaaia projektides
illustreerib Autofaci kasutamist.
Lõpetame nüüd:
Järgmises loengus räägin Autofaci kasutamisest konkreetsetes projektides viljapuuaedade projektides.
Vaata nüüd selle elutsüklit
1、InstancePerDependency
Loo iga sõltuvuse või kõne jaoks uus unikaalne instants. See on ka vaikimisi viis instantside loomiseks.
Ametlik dokumentatsioon selgitab: Seadista komponent nii, et iga sõltuv komponent või kutse Resolve()-le saaks uue, unikaalse instantsi (vaikimisi).
2、InstancePerLifetimeScope
Elutsükli domeenis loob iga sõltuvus või kutse ühe jagatud instantsi ning iga erineva elutsükli domeeni puhul on eksemplar unikaalne ega ole jagatud.
Ametlik dokumentatsioon selgitab: Seadista komponent nii, et iga sõltuv komponent või kõne Resolve() ühes ILifetimeScope'is saaks sama, jagatud instantsi. Sõltuvad komponendid erinevates eluea ulatustes saavad erinevaid instansse.
3、InstancePerMatchingLifetimeScope
Tuvastatud elutsükli domeenis loob iga sõltuvus või kutse ühe jagatud instantsi. Vanemdomeeni instantse saab jagada tuvastatud elutsükli domeeni lapse identiteedidomeenis. Kui kogu pärilikkuse hierarhias ei leita tuvastatud elutsükli domeeni, lisatakse erand: DependencyResolutionException.
Ametlik dokumentatsioon selgitab: Seadista komponent nii, et iga sõltuv komponent või Resolve() kutse ILifetimeScope'is, mis on märgistatud mõne antud sildi väärtusega, saaks sama, jagatud instantsi. Sõltuvad komponendid eluaegsetes ulatustes, mis on märgistatud skoopi lapsed, jagavad vanema instantsi. Kui hierarhias ei leia sobivalt märgistatud ulatust, visatakse DependencyResolutionException.
4、InstancePerOwned
Eksemplari elutsüklis, mille loob elutsükli domeenis omanduses olev instants, loob iga sõltuv komponent või Resolve() meetodi kutse ühe jagatud eksemplari ning lapse elutsükli domeen jagab eksemplari vanemtsükli domeenis. Kui pärimishierarhias ei leita sobivat elutsükli domeeni koos laps-instantsidega, visatakse erand: DependencyResolutionException.
Ametlik dokumentatsioon selgitab:
Seadista komponent nii, et iga sõltuv komponent või Resolve() kutse ILifetimeScope'is, mille on loonud omatud instants, saab sama, jagatud instantsi. Sõltuvad komponendid eluaegsetes ulatustes, mis on omandis oleva instantsi ulatuse lapsed, jagavad vanema instantsi. Kui hierarhias ei leia sobivat omandis oleva instantsi ulatust, lisatakse DependencyResolutionException.
5、SingleInstance
Iga kord, kui sa sõltud komponendist või kutsud Resolve() meetodit, saad sama jagatud instantsi. Tegelikult on see üksikmudel.
Ametlik dokumentatsioon selgitab: Seadista komponent nii, et iga sõltuv komponent või kõne Resolve()-le saaks sama, jagatud instantsi.
6、InstancePerHttpRequest
Http-päringu kontekstis jagage komponendi eksemplari. Saadaval ainult asp.net MVC arenduseks.
|