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].

Межа між CMF і CMS[ред. | ред. код]

Багато сучасних систем управління вмістом побудовані навколо 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[en]. З'явилась тенденція використовувати як базис для побудови системи керування змістом 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].

Примітки[ред. | ред. код]

  1. Дмитрий Попов. CMF как инструмент freelance-разработки (Доклад на осенней конференции PHPConf 2004) // PHP Inside. — phpclub.ru. — № 7. — С. 97-107. Архівовано з джерела 7 травня 2006.
  2. а б в г Samisa Abeysinghe. Ch 3. Dealing with Complexity → Frameworks to simplify complexity // PHP Team Development. — Packt[en], 2009. — P. 58-68. — ISBN 978-1-847195-06-7.
  3. Rokas Firantas, Martynas Jusevičius. Web application framework based on semantic technologies. — IT University of Copenhagen, 23 November — 20 December 2006.
  4. What is Zope CMF?. Архів оригіналу за 6 березня 2016. Процитовано 26 червня 2016. 
  5. TomatoCMS. Архів оригіналу за 27 серпня 2016. Процитовано 26 червня 2016. 
  6. Колисниченко Денис Николаевич. Выбираем лучший бесплатный движок для вашего сайта. CMS Joomla! и Drupal. — БХВ-Петербург, 2010-01-01. — 288 с. — ISBN 9785977505970.
  7. Angela Byron, Addison Berry, Bruno De Bondt. Using Drupal. — "O'Reilly Media, Inc.", 2012-04-10. — 495 с. — ISBN 9781449336158.
  8. Matt Butcher, Larry Garfield, John Wilkins. Drupal 7 Module Development. — Packt Publishing Ltd, 2010-12-03. — 822 с. — ISBN 9781849511179.
  9. Jennifer Hodgdon. Programmer's Guide to Drupal: Principles, Practices, and Pitfalls. — "O'Reilly Media, Inc.", 2015-10-13. — 339 с. — ISBN 9781491912621.
  10. Liran Tal. Drupal 7 Media. — Packt Publishing Ltd, 2013-01-01. — 385 с. — ISBN 9781849516099.

Література[ред. | ред. код]

Посилання[ред. | ред. код]