[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
В ASP.NET Core существует три различных варианта времени жизни при регистрации службы в контейнере внедрения зависимостей (DI):
- AddTransient: создает новый экземпляр службы для каждого запроса. Это означает, что новый экземпляр сервиса будет создаваться каждый раз, когда его запрашивает компонент. Это подходит для легких, не имеющих статического состояния сервисов, создание которых не требует больших затрат, и которые могут безопасно использоваться несколькими клиентами одновременно.
- AddScoped: создает новый экземпляр службы для каждого диапазона. Область видимости обычно определяется как время жизни HTTP-запроса. Это означает, что для каждого нового HTTP-запроса будет создаваться новый экземпляр службы, то есть объекты одинаковы в пределах одного запроса, но различны в разных запросах. После завершения запроса экземпляр службы будет утилизирован.
- AddSingleton: создает единственный экземпляр службы на все время существования приложения. Это означает, что один и тот же экземпляр службы будет использоваться для каждого запроса. Это полезно для служб, которые не имеют статических данных или безопасны для потоков и могут безопасно использоваться несколькими клиентами одновременно.
В целом, рекомендуется использовать наиболее подходящее время жизни для каждой службы. Например, объект контекста базы данных должен быть зарегистрирован как AddScoped, так как он не должен быть общим для всех запросов, а служба протоколирования может быть зарегистрирована как AddSingleton, так как она не имеет статического характера и может быть общей для всех запросов.
Вот пример регистрации службы с каждым из трех вариантов времени жизни в ASP.NET Core:
1 2 3 4 5 6 7 8 |
// AddTransient example services.AddTransient<IMyService, MyService>(); // AddScoped example services.AddScoped<IMyScopedService, MyScopedService>(); // AddSingleton example services.AddSingleton<IMySingletonService, MySingletonService>(); |
Я надеюсь, что вам понравилось читать эту статью, и она оказалась легкой для понимания. Пожалуйста, дайте мне знать, если у вас есть какие-либо комментарии или исправления.
Так же вам может быть интересна предыдущая статья — Что такое мастер страница в Asp.net.
Вы хотите научится писать код на языке программирования C#?
Создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, десктопных приложений, телеграмм-ботов и т.д.
Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:
- Доступ к пройденному материалу
- Тематические статьи
- Библиотека книг
- Онлайн тестирование
- Общение в закрытых группах
Живи в своем мире, программируй в нашем.