Я использую Injection Dependency в своем коде (с Ninject) и думал, что делаю все хорошо, пока не столкнулся с проблемой производительности, вызванной неправильным пониманием того, где контейнеры DI вписываются в ваш код. Кажется, есть много информации о том, как использовать рамки DI, но не слишком много, чтобы не использовать их или как их использовать (по крайней мере, что я мог найти)Рекомендации по впрыскиванию зависимостей
Я думал, что напишу, что я мысли были некоторыми лучшими практиками и выяснили, согласны ли со мной другие люди и какие другие передовые практики могут придумать.
- Используйте одно ядро для каждого приложения или AppDomain
- Используйте DI контейнер для долгоживущих Singleton только объекты, использовать заводы (или другие методы) для короткоживущих временных объектов)
- Предпочитают Constructor Injection по недвижимости или полевая инъекция
- Запросить объекты, не строить их
- другие ?? указатели на хороший блог
Что такое ядро? что конкретная концепция Ninject (нигде не видели)? – zvolkov
также, сборщик против инъекций конструктора является религиозным аргументом и как таковой следует избегать. – zvolkov