Инъекционный и ленивый Dependency Injection mvc 4.5
Я начал работать с Ninject для веб-сайта и настраивал DI в проекте.
Я заметил, что вы регистрируете зависимости привязки в app_start под названием ninjectWebCommon. Когда проект загружается, все зависимости регистрируются? Например, если у вас зарегистрировано более 50 зависимостей, это вызовет проблемы с ресурсами? Или каждый экземпляр регистрируется при выполнении страницы? Если нет, есть ли способ ленивого связывания зависимостей или это не нужно?
Есть ли лучший способ сделать это, даже если использовать другой контейнер IOC?
2 ответа
Вы должны прочитать о шаблоне Register Resolve Release. В основном процесс регистрации довольно прост, вы указываете контейнеру, какие типы использовать для разрешения абстракций. В этом процессе объекты не создаются. Контейнер DI создает случаи, когда запрос попадает в ваше приложение. Они могут быть созданы только один раз или по каждому запросу, в зависимости от жизненного цикла.
Вы делаете такие же регистрации и для других контейнеров, и это действительно должно быть проблемой с ресурсами. Однако Ninject немного медленный. Если вы можете выбирать, как вам нравится, вам лучше использовать DI-контейнер, такой как SimpleInjector.
Для сравнения я использовал сайт с некоторыми тестами.