Content Management Framework | это... Что такое Content Management Framework? (original) (raw)
Content Management Framework (CMF) — это каркас (фреймворк программной системы) для проектирования систем управления контентом. На их основе создаются системы управления содержимым (CMS), а также веб-приложения.
Содержание
- 1 Преимущества
- 2 Архитектура
- 3 Важные характеристики фреймворка
- 4 Граница между CMF и CMS
- 5 Примечания
- 6 Литература
- 7 Ссылки
Преимущества
Если основная задача универсальных CMS — простота создания сайта без вмешательства программиста, CMF — это конструктор CMS (в том числе узкоспециализированных) для программиста. Благодаря такому подходу сайт, созданный с помощью CMF, по сравнению с сайтом на базе CMS, может иметь более простую и безопасную в работе административную панель (в которой отсутствуют функции настройки сайта под любые функции) и быть менее требовательным к ресурсам системы (каждый модуль реализует именно те функции, которые необходимы в работе сайта). При наличии грамотно спроектированной CMF и готовых модулей, программисту остаётся только сборка этих модулей в единое пространство и оформление вывода в соответствии с пожеланиями клиента, то есть разработка сайта на основе CMF вполне сравнима по трудоёмкости с разработкой сайта на универсальной CMS[1].
Сложности могут возникнуть, если программист-пользователь фреймворка столкнётся с программными ошибками. Не будучи экспертом в архитектуре фреймворка, он может испытывать затруднение с её локализацией, не может быть уверен, сделал ли он ошибку сам, или столкнулся с ошибкой в CMF. Глубокие знания архитектуры фреймворка могут понадобится и при его тонкой настройке, если программист желает получить максимальную производительность[2].
Архитектура
Фреймворки веб-приложений обычно обеспечивают механизмы доступа к базе данных, шаблонизации и управление сессиями (англ.)русск.[3].
Большинство современных CMF являются реализацией архитектуры Model-View-Controller. Веб-фреймворк обеспечивает бесшовную интеграцию всех трёх слоёв MVC архитектуры. Фреймворки скрывают от программиста детали подключения к базе данных и формирования веб страниц с помощью шаблонов-представлений, позволяя программисту сконцентрироваться на реализации бизнес-логики[2].
Процесс создания приложения с использованием MVC-фреймворка заключается в написании классов контроллеров, моделей и представлений, каждый из которых является наследником базовых классов для компонентов каждого слоя.
Многие веб-фреймворки обеспечивают полуавтоматическое создание прототипа веб-приложения, выполняющего основные (CRUD) операции с данными путём скаффолдинга.
Важные характеристики фреймворка
- Размер. При выборе CMF стоит обращать внимание на такие факторы, как размер фреймворка. Если фреймворк слишком велик и не имеет легко разделяемой модульной архитектуры, это может неоправданно утяжелить приложение. Компактность фреймворка может вступить в противоречие с широтой возможностей, которые он предоставляет[2].
- Производительность — другая важная на практике характеристика веб-фреймворка. Она может косвенно зависеть от размера, особенно для интерпретируемых языков вроде PHP. Следует оценивать производительность фреймворка в таких единицах, как количество обрабатываемых в секунду запросов[2].
Граница между CMF и CMS
Многие современные системы управления содержанием построены вокруг MVC-фреймворка. Такой фреймворк может быть специально написан для системы, примерами могут являться: Joomla (начиная с версии 1.5), Bitrix (начиная с версии 6), MODx Revolution (начиная с версии 2.0), SilverStripe, Contao, Frog CMS/Wolf CMS ведётся постепенный перевод на такую архитектуру TYPO3. Другие системы используют фреймворки, популярные сами по себе. Так написанная на питоне CMS Plone построена вокруг Zope, коммерческая CMS ExpressionEngine (англ.)русск. использует свободный фреймворк CodeIgniter того же автора. CMS eZ publish основана на фреймворке eZ Components (англ.)русск., изначально того же разработчика (сейчас передан Apache Foundation и переименован в Zeta Components (англ.)русск.). В последнее время появилась тенденция использовать в качестве базиса для построения системы управления содержанием Zend Framework: примерами могут служить вошедшие в финал Packt Open Source Awards — 2010 в категории «самые многоообещающие CMS» Pimcore (англ.)русск. и Tomato CMS[4], а также Concrete5, отмеченная в 2011 Open Source CMS Market Share Report, как самая быстрорастущая CMS.
Ряд CMS, предоставляющих API для расширения своей функциональности, претендуют на звание CMF, хотя провести чёткую границу между CMS и CMF порой сложно. К примерам CMF, также являющимися готовыми CMS, можно отнести такие системы, как Drupal.
Примечания
- ↑ Дмитрий Попов CMF как инструмент freelance-разработки (Доклад на осенней конференции PHPConf 2004) // PHP Inside. — phpclub.ru, 2004. — № 7. — С. 97-107.
- ↑ 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.
- ↑ TomatoCMS
Литература
- 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.
- Денис Баженов Теория разработки 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
Веб-фреймворки | |
---|---|
ASP.NET | DotNetNuke • ASP.NET MVC • MonoRail |
ColdFusion | ColdSpring • Fusebox • Mach-II • Model-Glue |
Java | Apache (Cocoon • Struts • Velocity • WebWork 2) • AppFuse • Aranea • Eclipse • Facelets • Flexive • FreeMarker • Google Web Toolkit • Grails • Hamlets • ItsNat • JavaServer Faces • Jspx • JBoss Seam • jZeno • Makumba • OpenLaszlo • OpenXava • Reasonable Server Faces (RSF) • Restlet • RichFaces • RIFE • Shale • SmartClient • Spring • Stripes • Tapestry • ThinWire • Vaadin • WebMacro • WebWork • WebObjects • Wicket • ZK |
JavaScript | node.js • AJILE • Clean AJAX • Dojo Toolkit • Echo • Ext JS • jQuery • jMaki • Microsoft AJAX Library • MochiKit • MooTools • Prototype • qooxdoo • Rialto Toolkit • Rico • script.aculo.us • SmartClient • Spry • SproutCore • Yahoo! UI Library • Underscore • PhoneGap |
Perl | Catalyst • Interchange • Titanium • Maypole • HTML:Mason |
PHP | Acode • Akelos • BlueShoes • CakePHP • Canvas • CodeIgniter • Cotonti • DIY • Drupal • Fuse • Horde • Kohana • LiveStreet • PHP For Applications • PHPOpenbiz • PRADO • Qcodo • Seagull • Solar • Symfony • W3Core • Yii • Zend • Zoop • Joomla |
Python | CherryPy • Django • GAE framework • Karrigell • Nevow • Porcupine • Pylons • Pyramid • Spyce • TurboGears • Twisted • Tornado • Webware • Zope |
Ruby | Camping • Nitro • IOWA • Ramaze • Cerise • Merb • Ruby on Rails • Sinatra • Padrino |
Прочиеязыки | Alpha Five • Fusebox (ColdFusion • PHP) • Helma Object Publisher (Server-side) • Lift (Scala) • Magic (Scheme) • OpenACS (Tcl) • Seaside (Smalltalk) • UnCommon Web (Common Lisp) • Yaws (Erlang) • Oracle Application Express (PL/SQL) |