7

Я пытаюсь внедрить методологию программирования DI/IoC в нашу группу развития, но один из разработчиков задал следующий вопрос:Помощь получение DI/IoC в доме

Зачем нам это нужно? Есть ли какой-либо конкретный пример, который может показать мне преимущество использования инфраструктуры DI/IoC, например, замок Windsor?

Таким образом, я спрашиваю, есть ли какие-либо тематические исследования или статьи, которые доказывают, что DI/IoC может принести пользу на веб-узле .NET на уровне предприятия?

Заранее спасибо

Обновление: Я в курсе всех в пользу DI/IoC приносит, но я до сих пор, чтобы увидеть полный пример в Интернете, которая проходит через весь процесс создания приложения с использованием DI/IoC и извлечь из этого выгоду. Опять же, любая статья или ссылки будут оценены.

+3

Я бы так же насторожен, как этот разработчик, если вы пытались внедрить методологию программирования в свой проект и не могли ответить на этот вопрос. – JoshJordan

+0

Согласен с Джошем, если это звучит и выглядит как змеиное масло, возможно, это ... (если только я не пытаюсь обучить TDD команде, LOL) – dferraro

ответ

6

Я работаю над проектом, где я могу видеть по крайней мере, три преимущества Dependency Injection и Инверсия управления:

  1. гибкость DI и, в меньшей степени, IoC позволяют, как она относится к модульное тестирование. Мы можем установить нуль на конкретном аспекте кода (или тестируемой системы) и протестировать этот бит функциональности, не прибегая к подготовке таблицы базы данных, или быть подчиненными капризам разделов кода, на которые нас сейчас не интересует.

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

  3. В одном из моих текущих проектов я хочу иметь возможность демонстрации веб-интерфейса пользователя и внутренней обработки одному из заинтересованных сторон. Это делается намного проще с помощью DI и IoC, потому что у меня может быть коллекция подделок, которые предоставляют точные данные, необходимые для проведения демонстрации. Таким образом, я не волнуюсь накануне, убедившись, что таблицы базы данных заполнены так, как я их ожидаю.

DI поощряет слабую связь между определенным классом и его зависимостью, в то время как IoC позволяет динамически конфигурировать, какие реализации этих зависимостей вводятся в классы, которые их используют. Последнее важно в отношении №3, потому что мое веб-приложение больше всего будет сконфигурировано с помощью IoC на основе настроек, которые я сделал в файле web.config. Мне нужно будет изменить только этот файл, когда мы пойдем на производство и начнем использовать не поддельные классы.

6

Назвать несколько особых преимуществ:

  • чистый код, который несет суть бизнес-логику в ней, а не толщина инфраструктурного
  • DI позволяет создавать более модульные приложения, обеспечивая механизм для развязки слоев вашего приложения
  • IoC позволяет экрнализировать проводку приложений/загрузку и обеспечивает централизованное (вроде) управление ресурсами (в некоторой степени).Последствие - у вас есть больше времени, чтобы сконцентрироваться на реальной функциональности/бизнес-логики

Некоторые хорошая информация о IoC и DI можно прочитать здесь: http://www.theserverside.com/tt/articles/article.tss?l=IntrotoSpring25

Конечно это о Spring Framework, общие понятия DI еще применяется ,

Смежные вопросы