Diwas Poudel Ответов: 1

Почему нам нужно добавить все сервисы в метод addtransient в файл startup.cs в ASP.NET ядро?


добавление всех служб, присутствующих в программе в addTransient, создаст экземпляр для этих служб . Это создание экземпляра выделяет память для всех служб. Если существует 200 сервисов, то хорошо ли выделять память для всех этих сервисов при запуске ?

public static class ServiceExtensions
    {
        public static IServiceCollection RegisterServices(
            this IServiceCollection services)
        {
            services.AddTransient<ITopicAreaService, TopicAreaService>();
            // Add say 200 services here will allocate memory for all  services at startup 
            //is this good to do so
            return services;
        }
    }


Что я уже пробовал:

public static class ServiceExtensions
    {
        public static IServiceCollection RegisterServices(
            this IServiceCollection services)
        {
            services.AddTransient<ITopicAreaService, TopicAreaService>();
            // Add say 200 services here will allocate memory for all  services at startup 
            //is this good to do so
            return services;
        }
    }

1 Ответов

Рейтинг:
1

Matthew Dennis

На данный момент он фактически не создает услуги. Переходные службы создаются по мере их разрешения из контейнера DI. Все, что выделяется-это объект, который описывает конструкцию сервиса и его срок службы.
Методы, которые используются для создания экземпляров, если они очень быстры и эффективны, приводят к созданию одного из самых быстрых контейнеров DI.


[no name]

На мой взгляд, выделение памяти для всех конкретных типов, присутствующих во всех, скажем, 200 addTransient метод не очень хорош при запуске.Хотя вы сказали Ди контейнер поддерживает их
Все нормально.
Мой следующий вопрос заключается в том, как контейнер DI знает, какую службу вводить в контроллер во время выполнения? Сделать контейнер впрыскивают весь сервис присутствует в автозагрузку.CS в соответствующем конструкторе контроллера ?Или он вводит на основе url - адреса запроса ?

Matthew Dennis

Вам нужно провести некоторые исследования о том, как работают контейнеры DI и DI. Попробуйте использовать свой дружественный Google, чтобы найти некоторые статьи, или используйте поиск на этом сайте, чтобы люди могли найти некоторые статьи.

[no name]

хорошо, спасибо, сэр.