Skip to content

Різниця між AddTransient, AddScoped і AddSingleton

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Завантаження...

[ Полезный рекламный блок ]

Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.


В ASP.NET Core існує три різні варіанти часу життя під час реєстрації служби в контейнері впровадження залежностей (DI):

  • AddTransient: створює новий екземпляр служби для кожного запиту. Це означає, що новий екземпляр служби буде створюватися кожного разу, коли його запитує компонент. Це підходить для легких сервісів, що не мають статичного стану, створення яких не вимагає великих витрат, і які можуть безпечно використовуватися кількома клієнтами одночасно.
  • AddScoped: створює новий екземпляр служби для кожного діапазону. Область видимості зазвичай визначається як час життя HTTP-запиту. Це означає, що для кожного нового HTTP-запиту створюватиметься новий екземпляр служби, тобто об’єкти однакові в межах одного запиту, але різні в різних запитах. Після завершення запиту екземпляр служби буде утилізовано.
  • AddSingleton: створює єдиний екземпляр служби на весь час існування програми. Це означає, що один і той самий екземпляр служби буде використовуватися для кожного запиту. Це корисно для служб, які не мають статичних даних або безпечні для потоків і можуть безпечно використовуватися кількома клієнтами одночасно.

Загалом, рекомендується використовувати найбільш підходящий час життя для кожної служби. Наприклад, об’єкт контексту бази даних має бути зареєстрований як AddScoped, тому що він не має бути спільним для всіх запитів, а служба протоколювання може бути зареєстрована як AddSingleton, тому що вона не має статичного характеру і може бути спільною для всіх запитів.

Ось приклад реєстрації служби з кожним із трьох варіантів часу життя в ASP.NET Core:

Я сподіваюся, що вам сподобалося читати цю статтю, і вона виявилася легкою для розуміння. Будь ласка, дайте мені знати, якщо у вас є якісь коментарі або виправлення.

Так само вам може бути цікава попередня стаття – Що таке майстер сторінка в Asp.net.

Ви хочете навчитися писати код мовою програмування C#?

Створювати різні інформаційні системи, що складаються з сайтів, мобільних клієнтів, десктопних додатків, телеграм-ботів тощо.

Переходьте до нас на сторінку Dijix і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:

  • Доступ до пройденого матеріалу
  • Тематичні статті
  • Бібліотека книг
  • Онлайн тестування
  • Спілкування в закритих групах

https://dijix.com.ua

Живи у своєму світі, програмуй у нашому.

Published inВідповіді на Запитання C# Asp.Net Core
Subscribe
Notify of
guest
0 комментариев
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x