Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 21356|Antwoord: 1

[Bron] IoC-efficiënte Autofac

[Link kopiëren]
Geplaatst op 13-09-2016 13:14:12 | | |
IoC ~ Efficiënte Autofac

Er bestaat geen twijfel dat Microsofts favoriete IoC-container niet spring.net Unity, maar Autofac is, vanwege zijn efficiëntie, vanwege zijn eenvoud, en daarom wordt het ook gebruikt voor door Microsoft geleide boomgaardprojecten

illustreert het gebruik van een Autofac.


Laten we het nu zo noemen:

In de volgende lezing zal ik het hebben over het gebruik van Autofac in specifieke projecten voor boomgaardprojecten.

Kijk nu naar de levenscyclus ervan

1、InstancePerDependency

Maak een nieuwe unieke instantie aan voor elke afhankelijkheid of aanroep. Dit is ook de standaardmanier om instanties te maken.

Officiële documentatie legt uit: Configureer de component zodat elke afhankelijke component of aanroep van Resolve() een nieuwe, unieke instantie krijgt (standaard).

2、InstancePerLifetimeScope

In een levenscyclusdomein creëert elke afhankelijkheid of aanroep één gedeelde instantie, en voor elk verschillend levenscyclusdomein is de instantie uniek en niet gedeeld.

Officiële documentatie legt uit: Configureer de component zodat elke afhankelijke component of aanroep naar Resolve() binnen één enkele ILifetimeScope dezelfde gedeelde instantie krijgt. Afhankelijke componenten in verschillende levensduurscopes krijgen verschillende instanties.

3、InstancePerMatchingLifetimeScope

In een geïdentificeerd levenscyclusdomein creëert elke afhankelijkheid of aanroep één gedeelde instantie. Instanties in het ouderdomein kunnen worden gedeeld in het kindidentiteitsdomein van het geïdentificeerde levenscyclusdomein. Als er in de gehele erfenishiërarchie geen geïdentificeerd levenscyclusdomein wordt gevonden, wordt een uitzondering gegooid: DependencyResolutionException.

Officiële documentatie legt uit: Configureer de component zodat elke afhankelijke component of aanroep naar Resolve() binnen een ILifetimeScope die met een van de gegeven tags is getagd, dezelfde gedeelde instantie krijgt. Afhankelijke componenten in lifetime scopes die kinderen zijn van de getagde scope delen de instantie van de ouder. Als er geen correct getagd scope in de hiërarchie kan worden gevonden, wordt een DependencyResolutionException gegooid.

4、InstancePerOwned

In de levenscyclus van een instantie die is aangemaakt door een instantie die in een levenscyclusdomein bezit, creëert elke afhankelijke component of aanroep naar de Resolve()-methode één gedeelde instantie, en het kindlevenscyclusdomein deelt de instanties in het ouderdomein. Als er geen geschikt levenscyclusdomein met kindinstanties wordt gevonden in de erfhiërarchie, wordt een uitzondering gegooid: DependencyResolutionException.

De officiële documentatie legt uit:

Configureer de component zo dat elke afhankelijke component of aanroep naar Resolve() binnen een ILifetimeScope die door een eigen instantie is aangemaakt, dezelfde gedeelde instantie krijgt. Afhankelijke componenten in lifetime scopes die kinderen zijn van de owned instance scope, zullen de instantie van de ouder delen. Als er geen geschikte owned instance scope in de hiërarchie kan worden gevonden, wordt een DependencyResolutionException gegooid.

5、SingleInstance

Elke keer dat je afhankelijk bent van een component of de Resolve()-methode aanroept, krijg je dezelfde gedeelde instantie. In feite is het een singleton-model.

Officiële documentatie legt uit: Configureer de component zodat elke afhankelijke component of aanroep naar Resolve() dezelfde gedeelde instantie krijgt.

6、InstancePerHttpRequest

In de context van een Http-verzoek deel je een instantie van een component. Alleen beschikbaar voor asp.net MVC-ontwikkeling.





Vorig:MVC's ActionResult
Volgend:ConcurrentDictionary vs. Dictionary+Locking - Dennis Gao
 Huisbaas| Geplaatst op 13-09-2016 13:15:50 |
Nuget-installatiemethode:

Installeer Autofac

Install-Package Autofac
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com