Управление зависимостями между компонентами в приложении

Статья посвящена управлению зависимостями между компонентами в приложении, рассматриваются такие концепции как Dependency Injection, Investion of Control container, Service Locator. Рассматривается существующий подход к управлению зависимостями между компонентами в приложении, анализируются проблемы которые несет в себе этот подход. Далее, путем последовательных шагов делается попытка решить эти проблемы, в результате чего приходим к таким концепциям как Service Locator, Dependency Injection, Inversion of Control Container.

Основной упор в статье делается на вопросы "Зачем?", "Почему?", а не "Как?". Обычно этим вопросам не уделяется должного внимания, и упор делается на детали реализации, однако понимание глубинных причин использования тех или иных вещей критично для их правильного и своевременного употребления.

Статья ориентирована на разработчиков, которые:

  • не слышали об DI/IoC и хотят понять зачем нужно использовать эти новинки, если и "так все хорошо".
  • знают что это такое, но пока не использовали в реальных приложения, и хотели бы более глубже понять необходимость использования DI/IoC, и какие преимущества несет эта концепция.
  • те кто, используют DI/IoC, но хотели бы лучше понять какие проблемы решает DI/IoC и какие benefits несет.

Содержание:

  1. Вопрос управления зависимостями между компонентами в приложении
  2. Классический подход к управлению зависимостями внутри компонент приложения
  3. Использование Service Locator
  4. Использование Dependency Injection / Inversion of control container
  5. Service Locator vs DI/IoC Container
  6. Реализации IoC container'ов
  7. Полезные ресурсы

Приветствие

Доброго времени суток, гости, а возможно и будущие посетители и подписчики моего блога.

Что хочу сказать. Наконец-то я обзавелся блогом. Лучше поздно, чем никогда. По правде говоря раньше у меня не было особой потребности развернуто высказаться, поделиться интересными заметками, какими-то новостями, хотя это не значит что у меня их вообще не было. Но все меняется, и вот, как результат, у меня появился блог.

В основном здесь будут публиковаться посты на технические темы. Будучи по профессии software developer в стеке .NET, посты будут охватывать соответсвующие технологии + темы посвященные разработке ПО в целом. Это будут либо обзоры каких аспектов, либо задачи с которыми я столкнулся и их возможные решения, либо просто мои домашние наброски и эксперименты. Скорее всего в ближайшее время появятся посты посвященные NHibernate или WCF.

В меньшей степени также буду публиковать заметки, не связанные с профессиональной деятельностью, новости моей жизни, заслуживающие всеобщей публикации либо просто какие-то интересности. Так например, в ближайшее время появится статья, посвященная Amazon Kindle e-book reader, его покупке, доставке, и использованию.

В завершение хочу понадеяться, что Вас заинтересуют мои будущие статьи.