Ninject и ленивая инъекция зависимостей mvc 4.5

Я начал работать с Ninject для веб-сайта и настройки DI в рамках проекта.

Я заметил, что вы регистрируете зависимости привязки в app_start с именем ninjectWebCommon. Когда проект загружается, все ли зависимости регистрируются? Например, если у вас зарегистрировано более 50 зависимостей, вызовет ли это проблемы с ресурсами? Или каждый экземпляр регистрируется при выполнении страницы? Если нет, есть ли способ лениво связать зависимости или в этом нет необходимости?

Есть ли лучший способ добиться этого, даже если используется другой контейнер IOC?


person James Andrew Smith    schedule 08.01.2014    source источник
comment
Вы имеете в виду инициализированный, а не зарегистрированный? Не должно быть много накладных расходов, если они просто регистрируются.   -  person Joey    schedule 08.01.2014
comment
Я имею в виду зарегистрированный. Это когда проект впервые запускается. например private static void RegisterServices(ядро IKernel) { kernel.Bind‹ILoggerService›().To‹LoggerService›(); }   -  person James Andrew Smith    schedule 08.01.2014
comment
В этом случае ответ Уфука охватывает то, что вы хотите знать.   -  person Joey    schedule 08.01.2014


Ответы (2)


Вам следует прочитать о шаблоне Register Resolve Release. В основном процесс регистрации довольно прост, вы указываете контейнеру, какие типы использовать для разрешения абстракций. В этом процессе не создаются никакие объекты. Контейнер внедрения зависимостей создает экземпляры, когда запрос попадает в ваше приложение. Они могут создаваться только один раз или при каждом запросе, в зависимости от жизненного цикла.

person Ufuk Hacıoğulları    schedule 08.01.2014

Вы выполняете такие регистрации и для других контейнеров, и это действительно не должно быть проблемой ресурсов. Однако Ninject немного медлителен. Если вы можете выбирать по своему усмотрению, вам может быть лучше с контейнером DI, таким как SimpleInjector.

Для сравнения я использовал веб-сайт с некоторыми тестами< /а>.

person helgeheldre    schedule 08.01.2014
comment
Та! Я быстро загляну. - person James Andrew Smith; 08.01.2014