2014-01-08 5 views
2

Я начал работать с Ninject для создания сайта и создания DI внутри проекта.Ninject и lazy Injection Dependency mvc 4.5

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

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

+0

Вы имеете в виду начальное, а не зарегистрированное? Если они просто регистрируются, не должно быть много накладных расходов. – Joey

+0

Я имею в виду зарегистрированный. Это когда проект запускается первым. например private static void RegisterServices (ядро IKernel) { kernel.Bind (). (); } –

+0

В этом случае ответ Уфука охватывает то, что вы хотите знать. – Joey

ответ

3

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

1

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

Для сравнения я использовал a website with some benchmarks.

+0

Ta! Я быстро загляну. –