Многие люди в пространстве .NET выбрали Castle Windsor и внедряют его в свои проекты, и в течение прошлого года я пытался понять, почему контейнеры IoC, похоже, рассматриваются как общая "лучшая практика". «? Я прочитал МНОГО рефератов и кратких объяснений причин Виндзора и тому подобного, но каждый последний из них действительно абстрактен и не кажется практичным для большинства проектов, к которым я прикасался, но в последнее время я был сталкиваюсь с множеством проектов, которые используют Виндзор, и я не понимаю, почему.
C # /. NET по своей природе поддерживает интерфейсное кодирование, абстрактные объекты, делегаты и события. Можно реализовать IoC прямо из основного языка и, используя Reflection и т.п., создавать экземпляры неизвестных экземпляров, которые реализуют известные интерфейсы, не прибегая к библиотекам контейнеров IoC.
При применении YAGNI / AYGNI (Вам это нужно?) Я чувствую, что Виндзор был чрезмерно использован. Я, безусловно, вижу преимущества контейнера IoC, но чувствую, что эти преимущества достигаются за счет дополнительных зависимостей и метаданных (специфичные для контейнера IoC атрибуты и методы, вызываемые в основном коде, файлы .config, разбросанные повсюду, app.config / web.config заполнены обязательными тегами, что делает файл .config более сложным для редактирования и т. д.), поэтому я пытаюсь найти компромисс.
Тем не менее, я принимаю возможность того, что я делаю ALL из этих наблюдений / заявлений о невежестве, так как я никогда не был тесно связан с проектом, который использовал Windsor или другую библиотеку контейнеров IoC , Что мне действительно нужно, так это чтобы кто-то продемонстрировал «средний» или «типичный» проект, в котором использовалась библиотека контейнеров IoC, и почему это считается «наилучшей практикой», когда мне кажется, что это делает грязный проект беспорядочным с зависимостями и метаданными.
Если бы кто-нибудь знал о каких-либо постах, статьях или книгах в блоге, которые бы мне понравились, это было бы здорово.
(я не спорю ради спора, а потому, что я действительно хочу получить информацию о том, должен ли я обучаться на контейнерах IoC).