Content Management Framework
Content Management Framework (CMF) — это каркас (фреймворк управления содержимым) для проектирования систем управления контентом. На их основе создаются системы управления содержимым (CMS), а также веб-приложения.
Преимущества[править | править код]
Если основная задача универсальных систем управления содержимым — простота создания сайта без вмешательства программиста, то есть — конструктор сайтов, то каркас управления содержимым — это конструктор систем управления содержимым (в том числе узкоспециализированных) для программиста. Благодаря такому подходу сайт, созданный с помощью каркаса, по сравнению с сайтом на базе системы управления содержимым, может иметь более простую и безопасную в работе административную панель (в которой отсутствуют функции настройки сайта под любые задачи) и быть менее требовательным к ресурсам системы (каждый модуль реализует именно те функции, которые необходимы в работе сайта). При наличии грамотно спроектированного каркаса и готовых модулей, программисту остаётся только сборка этих модулей в единое пространство и оформление вывода в соответствии с пожеланиями клиента, то есть разработка сайта на основе каркаса вполне сравнима по трудоёмкости с разработкой сайта на основе универсальной системы управления содержимым[1].
Сложности могут возникнуть, если программист-пользователь фреймворка столкнётся с программными ошибками в его реализации. Не будучи экспертом в архитектуре фреймворка, он может испытывать затруднение с её локализацией, не может быть уверен, сделал ли он ошибку сам, или столкнулся с ошибкой в фреймворке. Глубокие знания архитектуры фреймворка могут понадобиться и при его тонкой настройке, если программист желает получить максимальную производительность[2].
Архитектура[править | править код]
Фреймворки веб-приложений обычно обеспечивают механизмы доступа к базе данных, шаблонизации и управление сессиями[3].
Большинство современных фреймворков управления содержимым являются реализацией архитектуры Model-View-Controller. Веб-фреймворк обеспечивает бесшовную интеграцию всех трёх слоёв MVC архитектуры. Фреймворки скрывают от программиста детали подключения к базе данных и формирования веб страниц с помощью шаблонов-представлений, позволяя программисту сконцентрироваться на реализации бизнес-логики[2].
Процесс создания приложения с использованием MVC-фреймворка заключается в написании классов контроллеров, моделей и представлений, каждый из которых является наследником базовых классов для компонентов каждого слоя.
Многие веб-фреймворки обеспечивают полуавтоматическое создание прототипа веб-приложения, выполняющего основные операции с данными (создание, чтение, обновление, удаление) с помощью метода метапрограммирования — скаффолдинга.
Важные характеристики фреймворка[править | править код]
- Размер. При выборе фреймворка управления содержимым стоит обращать внимание на такие факторы, как его размер. Если он слишком велик и фреймворк не имеет легко разделяемой модульной архитектуры, это может неоправданно увеличить размер приложения. Компактность фреймворка может вступить в противоречие с широтой возможностей, которые он предоставляет[2].
- Производительность — другая важная на практике характеристика веб-фреймворка. Она может косвенно зависеть от размера, особенно для интерпретируемых языков подобным PHP. Следует оценивать производительность фреймворка в таких единицах, как количество обрабатываемых в секунду запросов[2].
Граница между фреймворком и системой управления содержимым[править | править код]
Многие современные системы управления содержимым (CMS) построены вокруг MVC-паттерна. Такой фреймворк может быть специально написан для системы, примерами могут являться: Joomla! (начиная с версии 1.5), Bitrix (начиная с версии 6), MODX Revolution (начиная с версии 2.0), SilverStripe, Contao, Frog CMS/Wolf CMS ведётся постепенный перевод на такую архитектуру TYPO3. Другие системы используют фреймворки, популярные сами по себе. Так, написанная на языке Python система управления содержимым Plone построена на основе объектно-ориентированного сервера приложений Zope (и его расширения — CMF[4]), коммерческая CMS ExpressionEngine использует свободный фреймворк CodeIgniter того же автора. CMS eZ publish основана на фреймворке eZ Components , изначально того же разработчика (сейчас передан Apache Foundation и переименован в Zeta Components ). В последнее время появилась тенденция использовать в качестве базиса для построения системы управления содержанием Zend Framework: примерами могут служить вошедшие в финал Packt Open Source Awards — 2010 в категории «самые многообещающие CMS» Pimcore и Tomato CMS[5], а также Concrete5, отмеченная в 2011 Open Source CMS Market Share Report, как самая быстрорастущая CMS. Выпущенная в конце 2014 года восьмая версия Drupal также построена вокруг Symfony.
Ряд cистем управления содержимым, предоставляющих интерфейс программирования приложений для расширения своей функциональности, претендуют на звание фреймворка, хотя провести чёткую границу между системой и фреймворком порой сложно. Основным отличием является то что используя систему можно построить сайт не написав ни одной строчки кода[источник не указан 2235 дней].
Такая готовая к использованию система управления контентом, как Drupal, одновременно считается и каркасом для построения таких систем[6], что определяется как возможностью расширения функционала за счёт пользовательских модулей[7][8][9], так и богатством механизмов и абстракций для управления контентом, предоставляемым этой системой[10].
Примечания[править | править код]
- ↑ Дмитрий Попов. CMF как инструмент freelance-разработки (Доклад на осенней конференции PHPConf 2004) // PHP Inside. — phpclub.ru, 2004. — № 7. — С. 97-107. Архивировано 7 мая 2006 года.
- ↑ 1 2 3 4 Samisa Abeysinghe. Ch 3. Dealing with Complexity → Frameworks to simplify complexity // PHP Team Development. — Packt , 2009. — P. 58-68. — 183 p. — ISBN 978-1-847195-06-7.
- ↑ Rokas Firantas, Martynas Jusevičius. Web application framework based on semantic technologies. — IT University of Copenhagen, 23 November — 20 December 2006.
- ↑ What is Zope CMF? (недоступная ссылка). Дата обращения: 3 сентября 2014. Архивировано 6 марта 2016 года.
- ↑ TomatoCMS (недоступная ссылка). Дата обращения: 8 февраля 2012. Архивировано 27 августа 2016 года.
- ↑ Колисниченко Денис Николаевич. Выбираем лучший бесплатный движок для вашего сайта. CMS Joomla! и Drupal. — БХВ-Петербург, 2010-01-01. — 288 с. — ISBN 9785977505970.
- ↑ Angela Byron, Addison Berry, Bruno De Bondt. Using Drupal. — "O'Reilly Media, Inc.", 2012-04-10. — 495 с. — ISBN 9781449336158.
- ↑ Matt Butcher, Larry Garfield, John Wilkins. Drupal 7 Module Development. — Packt Publishing Ltd, 2010-12-03. — 822 с. — ISBN 9781849511179.
- ↑ Jennifer Hodgdon. Programmer's Guide to Drupal: Principles, Practices, and Pitfalls. — "O'Reilly Media, Inc.", 2015-10-13. — 339 с. — ISBN 9781491912621.
- ↑ Liran Tal. Drupal 7 Media. — Packt Publishing Ltd, 2013-01-01. — 385 с. — ISBN 9781849516099.
Литература[править | править код]
- Martin Brampton. PHP5 CMS Framework Development. — PACKT publishing, June 2008. — 328 p. — ISBN 978-1-847193-57-5.
- Samisa Abeysinghe. Ch 3. Dealing with Complexity → Frameworks to simplify complexity // PHP Team Development. — Packt , 2009. — P. 58-68. — 183 p. — ISBN 978-1-847195-06-7.
- Дмитрий Попов. CMF как инструмент freelance-разработки (Доклад на осенней конференции PHPConf 2004) // PHP Inside. — phpclub.ru, 2004. — № 7. — С. 97-107. Архивировано 7 мая 2006 года.
- Денис Баженов. Теория разработки framework-систем // PHP Inside. — phpclub.ru, 2004. — № 9. — С. 5-18. (недоступная ссылка), Денис Баженов. Каркасы, каркасы, каркасы… // PHP Inside. — phpclub.ru, 2005. — № 11. — С. 5-11. (недоступная ссылка)
- Йен Маурер. Среды Web-разработки на языке Python, Часть 1: Разработка для Web с помощью Django и Python = Python Web frameworks, Part 1: Develop for the Web with Django and Python. — IBM developerWorks., Часть 2. Разработка для Web с помощью TurboGears и Python = Part 2: Web development with TurboGears and Python. — IBM developerWorks.
- Julia Plekhanova. Evaluating web development frameworks: Django, Ruby on Rails and CakePHP // The IBIT Report. — Temple University, September 2009.
- Java Web MVC Frameworks: Background, Taxonomy, and Examples
- Evaluation of web application frameworks with regards to rapid development
Ссылки[править | править код]
- Bestwebframeworks, Choose your programming language to compare web frameworks
- Web Framework Benchmarks
- Сравнение каркасов веб-приложений