IoC ~ Эффективный Autofac
Нет сомнений, что любимый контейнер IoC Microsoft — не spring.net Unity, а Autofac, благодаря своей эффективности и простоте, поэтому он также используется для проектов садов под руководством Microsoft
иллюстрирует использование автофака.
Давайте определим это сейчас:
В следующей лекции я расскажу об использовании Autofac в конкретных проектах для садов.
Теперь посмотрите на её жизненный цикл
1、InstancePerDependency
Создайте новый уникальный экземпляр для каждой зависимости или вызова. Это также стандартный способ создания экземпляров.
Официальная документация объясняет: Настройте компонент так, чтобы каждый зависимый компонент или вызов Resolve() получал новый, уникальный экземпляр (по умолчанию).
2、InstancePerLifetimeScope
В домене жизненного цикла каждая зависимость или вызов создаёт единый общий экземпляр, и для каждого отдельного домена жизненного цикла экземпляр уникален и не является общим.
Официальная документация объясняет: Настройте компонент так, чтобы каждый зависимый компонент или вызов Resolve() в одном ILifetimeScope получал одинаковый общий экземпляр. Зависимые компоненты в разных сроках жизни получат разные экземпляры.
3、InstancePerMatchingLifetimeScope
В определённом домене жизненного цикла каждая зависимость или вызов создаёт единый общий экземпляр. Экземпляры в родительском домене могут быть совместны в дочернем домене идентичности идентифицированного домена жизненного цикла. Если во всей иерархии наследования не найдено идентифицированный домен жизненного цикла, создаётся исключение: DependencyResolutionException.
Официальная документация объясняет: Настройте компонент так, чтобы каждый зависимый компонент или вызов Resolve() в ILifetimeScope, помеченном любым из предоставленных тегов, получал одинаковую совместную экземпляр. Зависимые компоненты в жизненных областях, которые являются дочерними чертями отмеченной области, будут использовать экземпляр родителя. Если в иерархии не найдено правильно помеченного область применения, создаётся исключение DependencyResolution.
4、InstancePerOwned
В жизненном цикле экземпляра, созданного экземпляром, принадлежащим в домене жизненного цикла, каждый зависимый компонент или вызов метода Resolve() создаёт один общий экземпляр, а дочерний домен жизненного цикла разделяет экземпляры в домене родительского жизненного цикла. Если в иерархии наследования не найден подходящий домен жизненного цикла с дочерними экземплярами, создаётся исключение: DependencyResolutionException.
Официальная документация объясняет:
Настройте компонент так, чтобы каждый зависимый компонент или вызов Resolve() внутри ILifetimeScope, созданного собственным экземпляром, получал одинаковый общий экземпляр. Зависимые компоненты в lifetime scope, которые являются дочерними делами владелического экземпляра, будут делить экземпляр родителя. Если в иерархии не найдено соответствующее владенческое область действия экземпляра, создаётся исключение DependencyResolution.
5、SingleInstance
Каждый раз, когда вы зависите от компонента или вызываете метод Resolve(), получаете один и тот же общий экземпляр. На самом деле, это модель Singleton.
Официальная документация объясняет: настройте компонент так, чтобы каждый зависимый компонент или вызов Resolve() получал одинаковый общий экземпляр.
6、InstancePerHttpRequest
В контексте HTTP-запроса используйте экземпляр компонента. Доступен только для asp.net MVC разработки.
|