Разница между рамкой и контейнером? - PullRequest
1 голос
/ 05 сентября 2011

Я читал этот вопрос на SO: Framework против Toolkit vs. Library где объясняется разница между фреймворком и библиотекой. Общее мнение заключается в том, что основное отличие заключается в Inversion of Control, поэтому у вас есть «горячие точки» в структуре, где вы присоединяете функциональность своего приложения (по сути, вы выбираете между наследованием / шаблоном / тяжеловесом или композицией / стратегией / облегчением для достижения этого).

Хорошо, теперь мне интересно, в чем же разница между фреймворком и контейнером? Я увидел следующее определение контейнера (Род Джонсона): «Контейнер - это фреймворк, в котором выполняется код / ​​объекты приложения». И это то, что смутило меня. Я думал, что это более или менее определение любого фреймворка :) Я имею в виду, если вы используете IoC в качестве параметра, который делает разницу между библиотекой и фреймворком (иначе вы называете библиотеку, но фреймворк вызывает вас), то не значит ли это, что более или менее какие-либо рамки удовлетворяют приведенному выше определению контейнера?

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

1 Ответ

1 голос
/ 06 сентября 2011

Я думаю, что вы смешиваете принцип инверсии управления и инструмент IoC.

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

В целом (по крайней мере, в .Net) класс Container лежит в основе этого инструмента, где происходит регистрация / разрешение / построение графа объектов и т. Д., Но я считаю, что имя является историческим артефактом, основанным на имени PicoContainer и статье Мартина Фаулерса Инверсия управляющих контейнеров и шаблон внедрения зависимостей .

...