IoC ~ Efficient Autofac
Il ne fait aucun doute que le conteneur IoC préféré de Microsoft n’est pas spring.net, Unity mais Autofac, en raison de son efficacité, de sa simplicité, et il est aussi utilisé pour des projets de vergers dirigés par Microsoft
illustre l’utilisation d’un Autofac.
Disons maintenant :
Dans le prochain cours, je parlerai de l’utilisation d’Autofac dans des projets spécifiques pour les projets de vergers.
Regardez maintenant son cycle de vie
1、InstancePerDependency
Créez une nouvelle instance unique pour chaque dépendance ou appel. C’est aussi la façon par défaut de créer des instances.
La documentation officielle explique : Configurez le composant de sorte que chaque composant ou appel dépendant à Resolve() obtienne une nouvelle instance unique (par défaut).
2、InstancePerLifetimeScope
Dans un domaine de cycle de vie, chaque dépendance ou appel crée une instance partagée unique, et pour chaque domaine de cycle de vie différent, l’instance est unique et non partagée.
La documentation officielle explique : Configurez le composant de sorte que chaque composant dépendant ou appel à Resolve() au sein d’un seul ILifetimeScope reçoive la même instance partagée. Les composantes dépendantes dans différents portémiques de vie auront des instances différentes.
3、InstancePerMatchingLifetimeScope
Dans un domaine de cycle de vie identifié, chaque dépendance ou appel crée une instance partagée unique. Les instances dans le domaine parent peuvent être partagées dans le domaine d’identité enfant du domaine de cycle de vie identifié. Si aucun domaine de cycle de vie identifié n’est trouvé dans toute la hiérarchie d’héritage, une exception est lancée : DependencyResolutionException.
La documentation officielle explique : Configurez le composant de sorte que chaque composant ou appel dépendant à Resolve() dans un ILifetimeScope tagué avec n’importe quelle valeur de balise fournie reçoive la même instance partagée. Les composantes dépendantes dans les longueurs à vie qui sont enfants du scope balisé partageront l’instance du parent. Si aucun champ de contrôle correctement étiqueté n’est trouvé dans la hiérarchie, une DependencyResolutionException est lancée.
4、InstancePerOwned
Dans le cycle de vie d’une instance créée par une instance appartenant à un domaine de cycle de vie, chaque composant ou appel dépendant à la méthode Resolve() crée une instance partagée unique, et le domaine de cycle de vie enfant partage les instances dans le domaine du cycle de vie parent. Si aucun domaine de cycle de vie approprié avec des instances enfants n’est trouvé dans la hiérarchie d’héritage, une exception est lancée : DependencyResolutionException.
La documentation officielle explique :
Configurez le composant de sorte que chaque composant ou appel dépendant à Resolve() au sein d’un ILifetimeScope créé par une instance possédée reçoive la même instance partagée. Les composantes dépendantes dans les champs de vie qui sont enfants de l’extension d’instance possédée partageront l’instance du parent. Si aucun champ d’instance approprié ne peut être trouvé dans la hiérarchie, une DependencyResolutionException est lancée.
5、SingleInstance
Chaque fois que vous dépendez d’un composant ou appelez la méthode Resolve(), vous obtenez la même instance partagée. En fait, c’est un modèle à un seul endroit.
La documentation officielle explique : Configurez le composant de sorte que chaque composant ou appel dépendant à Resolve() reçoive la même instance partagée.
6、InstancePerHttpRequest
Dans le contexte d’une requête Http, partagez une instance d’un composant. Disponible uniquement pour asp.net développement MVC.
|