2009-09-12 4 views
18

Предоставляет ли рамка абстрагированный общий код, но не полностью (пример: абстрактное сетевое соединение, но не то, что вы на самом деле делаете с данными), и не решает каких-либо конкретных общих требований, тогда как набор инструментов имеет решения к общим проблемам (например: виджет диалогового окна)?В чем основное различие между каркасом и набором инструментов?

Реальный мир Пример: Prototype является «каркасом», но Dojo является «набором инструментальных средств».

Итак, мой вопрос в том, каковы критерии, чтобы назвать что-то фреймворком и называть его инструментарием?

ответ

12

Рамки обеспечивают определенный шаблон проектирования для разработчика и предоставляют некоторые инструменты для генерации кода. Это хорошо соответствует моему первому предложению, поскольку он генерирует код в определенном стиле/шаблоне.
Библиотека дает вам функциональные возможности для использования по своему усмотрению. Как STDIO функции C, Консоль С # «встроенной» функции PHP и т.д.
Вы можете сосчитать библиотеку как своего рода API

9

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

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

25

Цитирование Мартина Фаулера в своей статье на Inversion of Control:

Инверсия управления является ключевой частью , что делает структуру другую к библиотеке. Библиотека по существу представляет собой набор функций, которые вы можете назвать, в эти дни обычно организованы в классы . Каждый вызов выполняет некоторую работу, и возвращает управление клиенту.

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

Итак, большое различие заключается в том, что ваш код вызывает библиотеку, а фреймворк вызывает ваш код.

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