Каковы преимущества использования стороннего контейнера внедрения зависимостей по сравнению с тем, который я создал? - PullRequest
3 голосов
/ 21 ноября 2010

Я построил контейнер IoC давным-давно, когда смотрел это шоу http://www.dnrtv.com/default.aspx?showNum=126 несколько месяцев назад, и сделал небольшой пример, используя его, и работал нормально.

Теперь я использую unity в качестве контейнера внедрения зависимостей в проекте, который я запускаю, а также попробовал NInject на предыдущем небольшом веб-сайте MVC.

Но теперь я спрашиваю себя, в чем преимущества этих контейнеров по сравнению с тем, который я создал из шоу, я просто вижу, что он загружается из файла конфигурации, который я могу сделать в моем, есть ли что-то еще, что мне не хватает ? Я просто хочу, чтобы кто-нибудь сказал мне, что вы должны использовать эти контейнеры по 1, 2, 3 причинам, что лучше, чем у вас.

Ответы [ 2 ]

7 голосов
/ 21 ноября 2010

Во-первых, эти контейнеры широко используются, следовательно, хорошо протестированы в реальных ситуациях - я не знаю, как у вас.

Они также хорошо документированы и знакомы многим разработчикам, поэтому, если они работают вВ команде нет необходимости рассказывать другим о вашем.

Некоторые контейнеры предлагают свободную конфигурацию (то есть конфигурацию в коде), это дает вам безопасность типов во время компиляции против времени выполнения.

Однако, если ваш контейнер работает для вас, и нет других разработчиков, зачем менять?

4 голосов
/ 21 ноября 2010

Другие контейнеры IoC будут:

  • быть более зрелым и, скорее всего, менее глючным
  • имеют лучшую производительность
  • поддерживаться кем-то другим
  • имеют больше функций, охватывающих больше сценариев, чем вы могли бы подумать
  • имеет встроенную интеграцию с другими фреймворками (такими как MVC, WCF и т. Д.)
  • есть сообщество, обсуждающее проблемы и как их обойти

Со своим собственным, вы будете ДЛИННЫМ далеко позади, и не получите поддержки всех вещей, упомянутых выше.

Если вы стремитесь создать что-то, что конкурирует с игроками, уже существующими (например, Autofac, Ninject, Unity и т. Д.), То сделайте это своим продуктом.

...