Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 20252|Ответ: 1

[Источник] Область действия экземпляра компонента autofac

[Скопировать ссылку]
Опубликовано 14.09.2018 13:22:21 | | | |
Область действия экземпляра определяет, как сервисы разделяются между запросами.

Оригинальный адрес:http://docs.autofac.org/en/latest/lifetime/instance-scope.html

Один экземпляр на зависимость

С этой опцией новый экземпляр возвращается каждый раз при запросе сервиса. Используйте InstancePerDependency(). Это стандартный вариант. Код ниже, строки 2 и 3 эквивалентны.

Следующий код генерирует новый экземпляр для каждого цикла, всего 100 экземпляров.

Одиночный экземпляр

Используйте эту опцию, чтобы запросить сервис либо в корневой, либо в вложенной области, оба возвращают один и тот же экземпляр. Используйте SingleInstance() для указания.


В коде ниже w1 и w2 всегда являются одним и тем же объектом, и существует только один экземпляр класса Worker в 100 циклах.


Один экземпляр на цель жизненного цикла

Используйте эту опцию, чтобы запросить сервис в определённом ILifetimeScope, возвращая только один экземпляр. Используйте InstancePerLifetimeScope(). В следующем коде 100 умноженных на w1 в области 1 — это один и тот же объект, а 100 умноженных на w2 в scope2 — один и тот же объект, но w1 и w2 — не один и тот же объект.


Один экземпляр на диапазон жизненного цикла сопоставления

Похоже на [один экземпляр на жизненный цикл] выше, но с большим контролем. Используйте эту опцию, чтобы объект ILifetimeScope получил тег. В диапазоне командного матча есть только один случай. Используйте метод InstancePerMatchingLifetimeScope().

В коде ниже w1 и w2 одинаковы, w3 и w4 одинаковы, но w1 и w3 разные.

При парсинге необходимо предоставить соответствующую разметку, и следующий код выдает исключение.

Один экземпляр на запрос

Некоторые приложения естественным образом имеют семантику запроса, например, ASP.NET MVC или WebForm. [Один экземпляр на запрос] реализуется на основе [один экземпляр на соответствующий жизненный цикл], предоставляя маркеры области действия, функции регистрации и интеграцию общих типов. По сути, [один экземпляр на каждый соответствующий жизненный цикл].

ASP.NET Core использует один экземпляр на каждый жизненный цикл, а не один экземпляр на запрос.

Один экземпляр на каждый владение

<T> Тип неявной ассоциации Owned создаёт вложенные диапазоны жизненного цикла. С регистрацией по экземпляру на владение можно ограничить зависимости только принадлежащими экземплярами.

В этом случае сервис ServiceForHandler ограничен областью действия экземпляра MessageHandler.


Диапазон резьбы

Autofac может заставить объекты потока A не удовлетворять зависимости потока B.

Тогда пусть каждый создаёт свой собственный срок службы

Важно: В многопоточной ситуации будьте осторожны, чтобы не убрать родительский прицел.В противном случае подскопы в производном потоке не смогут разрешить сервис.

Каждый поток будет иметь свой собственный экземпляр MyThreadScopedComponent, который по сути является одиночной системой с ограничением жизненного цикла. Экземпляры в области не предоставляются внешне, поэтому легко держать компоненты изолированными между потоками.

Добавив параметр ILifetimeScope, родительский диапазон можно внедрить в код, генерирующий поток, и Autofac автоматически внедрит текущий диапазон, который затем можно использовать для создания вложенных областей.

Если хотите контролировать её дальше, можно использовать [один экземпляр на соответствующий диапазон жизненного цикла], чтобы связать компоненты с объёмом потоков с внутренними областью видимости жизненного цикла, как показано на рисунке:



«Context» на диаграмме — это диапазон жизненного цикла, созданный методом BeginLifetimeScope.





Предыдущий:Эффекты клика мыши на фронтенде: свобода, демократия, процветание
Следующий:{&quot;error_msg&quot;: &quot;Сертификация IAM провалилась&quot;}
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com