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