Content Management Framework
Content Management Framework (CMF) — це каркас (фреймворк програмної системи) для проектування систем управління контентом. На їхній основі створюють системи управління вмістом (CMS), а також вебдодатки.
Якщо основне завдання універсальних CMS — простота створення сайту без втручання програміста, тобто — конструктор сайтів, то CMF — це конструктор CMS (у тому числі спеціальних) для програміста. Завдяки такому підходу сайт, створений за допомогою CMF, порівняно з сайтом на базі CMS, може мати більш просту і безпечну у роботі адміністративну панель (в якій відсутні функції налаштування сайту під будь-які функції) і бути менш вимогливим до ресурсів системи (кожен модуль реалізує саме ті функції, які необхідні в роботі сайту). За наявності грамотно спроектованої CMF і готових модулів, програмісту залишається тільки збірка цих модулів в єдиний простір та оформлення висновку у відповідності з побажаннями клієнта, тобто розробка сайту на основі CMF цілком порівнянна по трудомісткості з розробкою сайту на універсальній CMS[1].
Складності можуть виникнути, якщо програміст-користувач фреймворку зіткнеться з програмними помилками в його реалізації. Непрофесіонал може не бути певним, чи зробив помилку сам, або зіткнувся з помилкою в CMF. Глибокі знання архітектури фреймворку можуть знадобитися і для його тонкого налаштування, якщо програміст бажає отримати максимальну продуктивність[2].
Фреймворки вебдодатків зазвичай забезпечують механізми доступу до бази даних, шаблонізації і управління сесіями[en][3].
Більшість сучасних CMF є реалізацією архітектури Model-View-Controller. Вебфреймворк забезпечує безшовну інтеграцію всіх трьох шарів архітектури MVC. Фреймворки приховують від програміста деталі підключення до бази даних і формування вебсторінок за допомогою шаблонів-уявлень, дозволяючи програмістові сконцентруватися на реалізації бізнес-логіки[2].
Процес створення програми з використанням MVC-фреймворку полягає в написанні класів контролерів, моделей і уявлень, кожен з яких є спадкоємцем базових класів для компонентів кожного шару.
Багато вебфреймворки забезпечують напівавтоматичне створення прототипу вебпрограми, що виконує основні (CRUD) операції з даними шляхом скаффолдинга.
- Розмір. При виборі CMF варто звертати увагу на такі фактори, як розмір фреймворка. Якщо фреймворк занадто великий і не може легко розділятись на модульну архітектуру, це може невиправдано його ускладнити. Компактність фреймворку може заважати широті можливостей, які він надає[2].
- Продуктивність — інша важлива характеристика вебфреймворка. Вона може залежати від розміру, особливо для інтерпретованих мов на кшталт PHP. Слід оцінювати продуктивність фреймворку в таких одиницях, як кількість оброблюваних запитів в секунду[2].
Багато сучасних систем управління вмістом побудовано навколо MVC-патерну. Такий фреймворк може бути спеціально написаним для системи, прикладами можуть бути: Joomla! (починаючи з версії 1.5), Bitrix[ru] (починаючи з версії 6), MODx Revolution (починаючи з версії 2.0), SilverStripe, Contao, Frog CMS/Wolf CMS, ведеться поступовий переклад на таку архітектуру TYPO3. Інші системи використовують фреймворки, популярні самі по собі. Так, написана на Python CMS Plone побудована на основі Zope (і його розширення — CMF[4]), комерційна CMS ExpressionEngine використовує вільний фреймворк CodeIgniter того ж автора. CMS eZ publish базується на фреймворку eZ Components[en], спочатку того ж розробника (переданий Apache Foundation і перейменований в Zeta Components. З'явилася тенденція використовувати як базис для побудови системи керування змістом Zend Framework: прикладами можуть служити Pimcore і Tomato CMS[5], а також Concrete5, що 2011 в Open Source CMS Market Share Report позначена як найдинамічніша CMS. Випущена в кінці 2014 року восьма версія Drupal також побудована навколо Zend Framework.
Ряд CMS, що надають API для розширення своєї функціональності, претендують на звання CMF, хоча провести чітку межу між CMS і CMF деколи складно. Основною відмінністю є те, що на CMS можна побудувати сайт, не написавши жодного рядка коду16[джерело?].
Така готова до використання система управління контентом, як Drupal, одночасно вважається і каркасом для побудови таких систем[6], що визначається як можливістю розширення функціоналу за рахунок користувацьких модулів[7][8][9], так і багатством механізмів і абстракцій для управління контентом, що надається цією системою[10].
- ↑ Дмитрий Попов. CMF как инструмент freelance-разработки (Доклад на осенней конференции PHPConf 2004) // PHP Inside. — phpclub.ru. — № 7. — С. 97-107. Архівовано з джерела 7 травня 2006. Процитовано 26 червня 2016. [Архівовано 2006-05-07 у Wayback Machine.]
- ↑ а б в г Samisa Abeysinghe. Ch 3. Dealing with Complexity → Frameworks to simplify complexity // PHP Team Development. — Packt, 2009. — P. 58-68. — 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. Архівовано з джерела 5 листопада 2012. Процитовано 26 червня 2016.
- ↑ What is Zope CMF?. Архів оригіналу за 6 березня 2016. Процитовано 26 червня 2016.
- ↑ TomatoCMS. Архів оригіналу за 27 серпня 2016. Процитовано 26 червня 2016.
- ↑ Колисниченко Денис Николаевич. [1] — БХВ-Петербург, 2010-01-01. — 288 с. — ISBN 9785977505970. Архівовано з джерела 16 березня 2022
- ↑ Angela Byron, Addison Berry, Bruno De Bondt. [2] — "O'Reilly Media, Inc.", 2012-04-10. — 495 с. — ISBN 9781449336158. Архівовано з джерела 16 березня 2022
- ↑ Matt Butcher, Larry Garfield, John Wilkins. [3] — Packt Publishing Ltd, 2010-12-03. — 822 с. — ISBN 9781849511179. Архівовано з джерела 16 березня 2022
- ↑ Jennifer Hodgdon. [4] — "O'Reilly Media, Inc.", 2015-10-13. — 339 с. — ISBN 9781491912621. Архівовано з джерела 16 березня 2022
- ↑ Liran Tal. [5] — Packt Publishing Ltd, 2013-01-01. — 385 с. — ISBN 9781849516099. Архівовано з джерела 16 березня 2022
- Martin Brampton. PHP5 CMS Framework Development. — 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. Процитовано 26 червня 2016.
- Денис Баженов. Теория разработки framework-систем // PHP Inside. — phpclub.ru, 2004. — № 9. — С. 5-18., Денис Баженов. Каркасы, каркасы, каркасы… // PHP Inside. — phpclub.ru, 2005. — № 11. — С. 5-11.
- Йен Маурер. Среды Web-разработки на языке Python, Часть 1: Разработка для Web с помощью Django и Python. — IBM developerWorks. Архівовано з джерела 14 серпня 2016. Процитовано 26 червня 2016.— IBM developerWorks., Часть 2. Разработка для Web с помощью TurboGears и Python. — IBM developerWorks.Розробка Web-з допомогою TurboGears і Python [Архівовано 14 серпня 2016 у Wayback Machine.] = 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. Архівовано з джерела 4 березня 2016. Процитовано 26 червня 2016.— Temple University, September 2009.
- Java Web MVC Frameworks: Background, Taxonomy, and Examples
- Evaluation of web application frameworks with regards to rapid development [Архівовано 4 березня 2016 у Wayback Machine.]
- Bestwebframeworks [Архівовано 19 червня 2016 у Wayback Machine.], Choose your programming language to compare web frameworks
- Web Framework Benchmarks [Архівовано 27 червня 2016 у Wayback Machine.]