Что такое Framework
У одного нашего знакомого слово «фреймворк» почему-то ассоциируется с понятием «фейерверк». Не будем вдаваться в подробности, почему это так – выясним истинную природу слова framework и его значение в программировании и сайтостроении.
Если заглянуть в английский словарик, становится понятно, что слово framework переводится как основа или каркас. В мире программирования фреймворком называют набор библиотек и готовых модулей, делающих создание основной структуры сайта максимально простым и быстрым. Рутинные операции автоматизируются, различные части web-сайта связываются между собой, чтобы стать единым целым. Framework может быть элементарным или неимоверно сложным. Все зависит от того, какие задачи поставлены перед программистами.
Наверняка, многим программистам при создании сайта приходилось пользоваться сторонними библиотеками из сети Интернет. Например, для загрузки и последующей обработки форм (валидация, работа с базой данных, сохранение). Многие из задействованных библиотек наверняка приходилось копировать в отдельные папки, а затем перемещать их от проекта к проекту. Вам знаком такой подход? Тогда вы точно нуждаетесь во framework.
Сам по себе фреймворк предполагает использование встроенных классов для работы с базами данных, создания форм, логирования, валидации и пр. Объединение различных элементов чаще всего происходит за счет работы с единым API.
Фреймворки и MVC.
Абсолютно все фреймворки используют паттерн проектирования под названием model view controller или MVC. Он представляет собой повторяемую организацию кода либо компонентов, решающих проблему проектирования. Шаблон MVC можно смело считать общим в программировании приложений, поскольку он разделяет их на три части. Первая представляет собой различные бизнес процессы (model). Вторая подсказывает приложению, что на самом деле необходимо сделать с потоками данных (controller). Третья часть помогает создать HTML-странички (вид).
Пожалуй, самым критическим замечанием по отношению к фреймворкам является то, что они выносят отношения контроллер/вид/модель из кода во все конфигурационные файлы (обычно в XML). Недостатком конфигурирования является то, что возникают ошибки, которые сложно найти с помощью IDE или того же компилятора. Обнаруживаются такие ошибки уже при самом выполнении кода.
Примеры фреймворков.
Для языка программирования Ява (Java) было создано множество фреймворков, среди которых Apache Click, Apache Struts, Apache Wicket, JBoss Seam, Spring Framework и другие.
Для PHP тоже существуют веб-фреймворки: Zend Framework, CakePHP, Symfony, Codelgniter. Есть они и для языка программирования Ruby (Ruby on Rails), и для многих других языков программирования.
Чем фреймворк отличается от библиотеки?
На начальном этапе знакомства может показаться, что эти два понятия очень похожи между собой. Но это не так. Библиотека используется в программных продуктах в виде набора подпрограмм близкой функциональности и не влияет на архитектуру программного продукта, не накладывает на нее никаких ограничений. С другой стороны, фреймворк диктует совершенно иные правила построения архитектуры, задавая поведение по умолчанию еще на начальном этапе разработки. Примером программного фреймворка может служить Content Management Framework, библиотекой будет считаться модуль электронной почты.
Еще одно отличие framework от библиотеки – инверсия управления. Во фреймворке задействованный пользовательский код может реализовать конкретное поведение, которое встраивается в абстрактный код.
В завершение добавим, что вокруг многих фреймворков возникают целые сообщества, пишутся книги и руководства по использованию. Целью большинства фреймворков является упрощение работы. Между тем, само изучение framework-приложений – задача не из легких. Прежде чем начать использовать каркас, необходимо тщательно изучить его. Только тогда можно будет использовать фреймворки максимально эффективно. Информацию о них можно получить на специальных сайтах.