Что нужно знать при разработке своих CMF и CMS. Опыт длиною в 2 года. Cmf cms


Что такое CMF, CMS. Сравнительный анализ популярных CMS для разработки сайтов.

УДК:

Арсирий Е.А.

Винин П.С.

Одесский национальный политехнический Университет

адрес: пр-т Шевченко, 1а.

Индекс 65000?

Резюме: В данной статье приводятся основные требования к созданию CMF, описываются технологии использующиеся сегодня при создании CMS. Проводится сравнение основных популярных систем CMS использующихся при создании сайтов.

Keywords: CMS - CMF - Drupal - software framework - Application Programming Interface,API - 1,

Введение

     С появлением новых информационных технологий наблюдается  постоянный рост требований к интерактивности и удобствам  пользования веб-сайтов (юзабилити). На смену сайтам-страничкам и сайтам-визиткам приходят так называемые «управляемые» сайты, когда пользователю предоставляют возможность редактировать структуру сайта независимо от его наполнения, размещать новый контент (информацию), не прибегая к помощи разработчика, управлять содержимым — любым информационно значимым наполнением информационного ресурса (например, веб-сайта) — тексты, графика, мультимедиа — вся информация, которую пользователь может выгрузить: новости компании, специальные предложения или акции, каталог продукции или услуг компании и прочее. Претерпевает большие изменения и интернет-торговля. Сайты-каталоги (веб-витрины), интернет-магазины с традиционными корзиной покупок и формой оформления заказа on-line вытесняют полноценные CRM системы (Customer Relationship Management - управление взаимоотношениями с клиентами) на современных Интернет ресурсах.

Постановка задачи

Для таких систем характерна работа каждым клиентом индивидуально. Это и «Личные корзины», позволяющие набирать товары, которые вы покупали ранее, «История покупок», ведущаяся с начала вашей регистрации в Интернет-магазине, «Система накопительных скидок», «Система поддержки нескольких адресов доставки» и т.д. В настоящее время в сети появляется все больше всевозможных «on-line» сервисов таких как произвести оплату кредитной картой on-line, оплатить услуги доступа Интернет, пополнить счет на мобильном телефоне, сделать электронную фотографию, смонтировать видео-ролик и т.д. Все перечисленное приводит к тому что современные веб-разработки это полноценные программные продукты (дистанционные информационные системы), требующие для своего создания полноценную программную среду или Программный фреймворк (англ. software framework) — программная среда, позволяющая строить сложные приложения используя заранее представленный единый интерфейс или API.(Интерфейс прикладного программирования (англ. Application Programming Interface, API — набор готовых констант, структур и функций, используемых при программировании пользовательских приложений и обеспечивающих правильное взаимодействие между пользовательским приложением и операционной системой. ) Программный фреймворк может включать вспомогательные программы, библиотеки кода, язык сценариев и другое программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. Общее отличие от библиотеки в том, что выполняет код написанный для него, а не исполняется сам. Пример программного каркаса — CMF (Content Management Framework), а пример библиотеки — модуль электронной почты. Также, в отличие от библиотеки, которая объединяет в себе набор близкой функциональности, фреймворк содержит в себе большое число разных по тематике библиотек. При этом использование единого API позволяет безболезненно развивать фреймворк и использовать собственные расширения в будущих проектах. Программисты каждой компании сами решают писать ли собственный движок для управления содержимым или использовать готовые решения. Для создания собственных готовых решений используют один или несколько software framework's исходя из нужд проекта. В сегодняшние дни скорость при создании программного продукта важна не меньша качества работы. Оперативность появления на рынке и реакция на изменения имеют высокую стоимость в данной сфере. Соответственно легче использовать готовые наработки чем писать каждый раз один и тот же функционал для проектов. Поэтому разработки отдельных ведущих специалистов объединяются что дает так называемый Content Management Framework (CMF) — каркасная система для управления содержимым. CMF — это инструментарий для создания систем управления содержимым, а также веб приложений вообще. Ряд CMS, предоставляющих API для расширения своей функциональности, претендуют на звание CMF. К примерам CMF, также являющимися готовыми CMS, можно отнести такие системы, как Plone, MODx, Drupal, TYPO3, Typolight, UMI.CMS, OPENKit.

По языкам программирования CMS присутствуют практически во всех, поддерживаемых ООП и не только: Java, PHP, Python, Ruby, Perl, JavaScript и другие. Как правило, на основе CMF создаются CMS — готовые системы управления содержимым, а те, в свою очередь, служат основой для создания полноценных сайтов.

Среди бесплатных software framework's существует множество систем, имеющих характерные особенности CMF. Данные системы ориентированы на профессиональных разработчиков, и обычно представляют собой набор библиотек, объединенных общей парадигмой. Как правило, такие системы предоставляют практически неограниченный набор возможностей для программиста, облегчая процесс разработки сайта и расширения его функционала в будущем, за что, впрочем, приходится платить необходимостью более глубокого ознакомления с системой.

Таблица 1. Бесплатные SF имеющие характерные особенности CMF

Название  

Платформа  

Поддерживаемые БД  

Текущая версия  

Лицензия  

Zend Framework

PHP 5

MySQL, Oracle, PostgreSQL, MS SQL, SQLite

1.9.2

BSD

CakePHP

PHP 4/5

PostgreSQL, MySQL, SQLite

1.2.3.8166

MIT

Symfony

PHP 5

MySQL, Oracle, PostgreSQL, MS SQL, SQLite

1.1

MIT

CodeIgniter

PHP 4/5

MySQL, Oracle, PostgreSQL, MS SQL, SQLite

1.7.1

BSD

YII

PHP 5

MySQL, MS SQL, SQLite

1.1.x

BSD

Некоторые из приведенных выше CMF одновременно обладают свойствами CMS. Постараемся выделить бесплатные системы, совмещающие в себе свойства CMS и CMF. Данные системы могут быть отнесены как к классу систем управления содержимым, так и каркасных систем. Другими словами, данные системы являются в достаточной степени расширяемыми и настраиваемыми, чтобы на их основе можно было создать программный продукт с произвольным набором возможностей, но с другой стороны, данные системы могут быть рассмотрены и как дистрибутивы, для установки и использования которых не требуются глубокие познания в программировании.

Таблица 2. Бесплатные системы, совмещающие в себе свойства CMS и CMF

 

 

C помощью этих систем чаще всего создаются дистанционные программные продукты. Для их создания всего используются языки PHP — Cake, Zend, Xevian. В сегодняшние дни скорость при создании сайта важна не меньша качества работы. Оперативность появления на рынке и реакция на изменения имеют высокую стоимость в данной сфере. Соответственно легче использовать готовые наработки чем писать каждый раз один и тот же функционал для проектов. Грамотно созданные классы и функции можно использовать во всех проектах, и расширять имеющийся API бесконечно. Собственно и сами системы управления содержимым, создающиеся на основе SMF претерпели колоссальные изменения. Сегодня систе́ма управле́ния содержи́мым/конте́нтом (англ. Content management system, CMS) — компьютерная программа или система, используемая для обеспечения и организации совместного процесса создания, редактирования и управления текстовых и мультимедиа документов (содержимое или контента). Обычно это содержимое рассматривается как неструктурированные данные предметной задачи в противоположность структурированным данным, обычно находящимися под управлением СУБД. Такая система не нуждается в профессиональном разработчике для поддержки и расширения функциональности. Появилась новая задача — оперативное добавление и управление информацией. Появилась новый вид деятельности контент-менеджер, -обозначает род профессиональной деятельности — редактор сайта. При эта работа требует минимальных знаний языков разработки и разметки страниц. Большая часть современных систем управления содержимым реализуется с помощью визуального (WYSIWYG) редактора — программы, которая создаёт HTML-код из специальной упрощённой разметки, позволяющей пользователю проще форматировать текст.

Сегодняшний принцип работы CMS: генерация страниц по запросу. Системы такого типа работают на основе связки «Модуль редактирования → База данных → Модуль представления». Модуль представления генерирует страницу с содержанием при запросе на него, на основе информации из базы данных. Информация в базе данных изменяется с помощью модуля редактирования. Страницы заново создаются сервером при каждом запросе, что в свою очередь создаёт дополнительную нагрузку на системные ресурсы. Нагрузка может быть многократно снижена при использовании средств кэширования, которые имеются в современных веб-серверах. Ранее используемый способ - генерация страниц при редактировании. Системы этого типа суть программы для редактирования страниц, которые при внесении изменений в содержание сайта создают набор статических страниц. При таком способе в жертву приносится интерактивность между посетителем и содержимым сайта.

Сегодя используется способ, сочитающий в себе преимущества первых двух. Он может быть реализован путём кэширования — модуль представления генерирует страницу один раз, в дальнейшем она в несколько раз быстрее подгружается из кэша. Кэш может обновляться как автоматически, по истечении некоторого срока времени или при внесении изменений в определённые разделы сайта, так и вручную по команде администратора. Другой подход — сохранение определённых информационных блоков на этапе редактирования сайта и сборка страницы из этих блоков при запросе соответствующей страницы пользователем.

Сейчас существует множество готовых систем управления содержимым сайта, в том числе и бесплатных. Тем не менее наличие проприетарных CMS все еще актуально.

Drupal, Joomla и WordPress — бесплатные системы управления, на основе которых можно создавать функциональные и легко управляемые сайты без серьезных финансовых затрат. Попробуем провести анализ и сравнить эти системы между собой. Мы выбрали наиболее важные аспекты, которые скорее всего заинтересуют разработчиков, планирующих построить программный продукт на базе cms/cmf решений.

Для лучшего понимания предметной области, а также для установления порядка была создана такая методика, как классификация. Классификация — это разделение общего множества на частные по выбранным критериям, то есть попросту деление на группы по общим признакам. Классификация требуется и в области систем управления, где она должна установить четкие разграничения между системами.

Классификация по степени открытости : все продукты можно разделить на две группы. В первую группу следует отнести все открытые продукты, во вторую — остальные (к остальным относятся коммерческие/проприетарные и бесплатно распространяемые продукты).

Теперь выделим наиболее важные для разработчика и пользователя критерии и оценим их по 10ти бальной шкале для каждой из трех популярных систем

www.maxeff.org

Что нужно знать при разработке своих CMF и CMS. Опыт длиною в 2 года / Хабр

Если вы разрабатываете сайты на PHP-фреймворках и ещё не имеете своей платформы, то наверняка о ней задумывались. Это могли быть CMF, CMS, конструктор сайтов, набор компонентов — материал подходит для любого из этих случаев. В статье поделюсь советами и примерами для тех, кто планирует создать свой инструмент, или уже находится в начале этого пути.

Мы не будет говорить про разработку ради фана, изучения новых технологий или дипломного проекта, если нет цели дать ему дальнейшее развитие. Мы поговорим про разработку инструментов для коммерческих проектов. Для каждой компании с web-production естественно формирование набора компонентов, которые часто используются. Иногда это буквально набор компонентов, иногда образцовые проекты (которые в последствии берутся за основу для разработки нового), иногда это эволюционирует в CMS или CMF. Последнее является спасением для компаний, если разработка на популярных CMS по каким-то причинам не подходит. Для разработчика — это возможность сделать что-то крутое, чем можно гордиться, а также увеличить свою зарплату (при условии адекватности работодателя).

В чём мой опыт по теме

Более 2-х лет назад я села за CMF. Через 2 месяца вяло-текущих работ был сделан первый сайт на его базе. Идея окупила себя уже в первом квартале. Подключила коллег, которые ускорили развитие. Через 8 месяцев среднее количество сайтов в квартал стало в 2-3 раза больше, чем раньше, при том же количестве рук и лучшем качестве. Попутно внедрили документирование и обучение клиентов. Это если очень кратко.

Основа

Итак, вы решили создать свой инструмент. Нужно решить 3 основополагающих вопроса:
  1. Выбор цели. Зачем нужен этот инструмент, какие задачи он должен решать, в какой сфере будет использоваться, для кого предназначен.
  2. Выбор базовых инструментов. Языки, технологии, архитектура — то, на основе чего будем создавать что-то своё.
  3. Какие возможности есть, какие ресурсы понадобятся. Даже если это реализация небольшой идеи, должен быть план. Нужно понимать, как вы это будете делать, нужно ли кого-то привлекать, сколько времени вам может понадобиться хотя бы на альфа-версию или первый рабочий прототип.

Советы

Они помогут ответить на 3 вопроса выше.
  1. Определите аргументы, почему нужно это делать, почему готовые решения не подходят. Если аргументы будут весомыми, это придаст вам уверенности. Если слабыми, это поможет избежать лишней траты времени.
  2. У вас должны быть реальные задачи, которые действительно нужно решить. Обозначьте их вместе с тем, что могло бы измениться, если решить их. Убедитесь, что есть возможность проверять ваше творение сразу в бою.
  3. Определите, что вы хотите получить от первой версии. Остальное можно просто записать списком. Не ставьте слишком больших целей для первого релиза. Для больших целей — большие сроки. Позвольте продукту увидеть свет как можно скорее. А уже потом дорабатывать, имея первые результаты и первую обратную связь.
  4. Как основу выбирайте простой инструмент — язык, базовый фреймворк. С низкой точкой входа, чтобы проще было развивать сам инструмент и проще поддерживать конечные продукты. При этом ему необязательно быть очень популярным, достаточно быть простым. Ещё он должен развиваться. Например, вы выбрали PHP-фреймворк, убедитесь, что разработчики продолжают над ним работать, и готов релиз под последнюю версию PHP.
  5. Выбирайте инструменты, которые уже хорошо знаете. А если хотите выбрать что-то новое, то сначала это изучите. Некоторые разработчики любят пробовать новое и сразу на серьезном проекте — может это и хорошо, но более непредсказуемо и рискованно в плане переделок из-за нехватки в начале знаний о том, как правильно. Работа с известным инструментом сэкономит время. Идеально, если вы в нем эксперт.
  6. Уделите большое внимание архитектуре. Делайте её понятной, она должна помогать, а не мешать. Первоначально это зависит от фреймворка, если вы его выбрали как основу. А в последствии — только от вас.
  7. Сразу подумайте о ведении документации. Определились с целью, планом — зафиксируйте. Придумали архитектуру — опишите. Готов первичный функционал — задокументируйте, что получилось. Это здорово помогает структурировать, выгрузить из головы уже реализованное, станет катализатором для новых идей, откроет глаза на ошибки.
  8. Если предполагается бэкенд для управления сайтом (обобщенно), сразу возьмите качественный платный шаблон для бэкенда. Его можно выбрать и купить на themeforest или других подобных ресурсах. При выборе подумайте, сможете ли вы его встроить под свои задачи, потому что бывает так — вроде крутой шаблон, а начинаешь использовать под себя, и получается ущербно. Вариант с шаблоном более бюджетный и быстрый. Если есть финансовая возможность, лучше привлечь UI и UX специалистов с опытом в подобных интерфейсах.
  9. Будьте готовы к постоянной доработке инструмента. Топор нужно точить постоянно в перерывах между рубкой леса. Поэтому во главе проекта должен стоять человек, которому не свойственно надоедание работы над проектом в течение длительного времени.
  10. Будьте готовы, что понадобится не только программировать. Нужно придумывать, рассказывать остальным, обучать и т.д.
  11. Расскажите о своей идее руководителю и коллегам, заручитесь их поддержкой.
  12. Задайтесь вопросами защиты кода, лицензирования и авторских прав. Не нужно сразу их решать, но нужно определить свою позицию.

Мой пример

Рассуждения ниже не претендуют на истину. Это пример хода мыслей, которые привели мои идеи к успеху.

Предпосылки. В компании накопилась приличная база кода и пачка сайтов с кочующим функционалом. Процесс разработки новых сайтов — мучительный поиск и копипаст из прошлых проектов. Оптимизация процесса поможет увеличить скорость разработки типовых проектов. Сейчас имеем 3 простых типовых проекта для сферы автобизнеса (но поэтому специфичных), на которых можно стартануть нашу платформу.

Почему не подходят готовые решения (популярные CMS). Они тяжеловесные, одновременно избыточные и недостаточные для наших задач.

Цель. Нужен инструмент для ускорения разработки корпоративных сайтов для бизнеса. Предназначен для разработчиков. Разработчик берёт в руки CMF, на выходе получает CMS для клиента под его задачи, таким образом наша цель — CMF для разработчика. Продавать CMF как продукт цели не ставим.

Первый релиз. Хочу увидеть через месяц инструмент для развертывания информационных сайтов, с заложенной архитектурой, базовым интерфейсом админ-панели на новом шаблоне (управление пользователями, управлением первыми модулями — инфостраницы, новости, отзывы, меню, заявки, услуги), базовую верстку для этих модулей во фронтенде. Это позволит в 2 раза быстрее делать сайты для автодилеров.

Архитектура. Составные части CMF нужно максимально обособить друг от друга, т.е. организовать некую модульность, поэтому как архитектура больше подойдёт HMVC.

Базовые инструменты. Выберу PHP5, CodeIgniter3, MySQL, Bootstrap3, jQuery, т.к. хорошо их знаю, они помогут мне решить задачи максимально быстро и просто, они имеют низкую точку входа для разработчиков. Будем сразу документировать, для начала подойдёт GoogleDocs. Для бэкенда отобрала 3 шаблона на базе Bootstrap, выберем из них вместе.

Ресурсы для первого релиза. Плановые затраты — 70-100 часов. Чтобы успеть в срок с учётом текущих задач, понадобится помощь одного PHP джуна или мидла.

С таким обоснованием уже можно идти к руководителю и коллегам.

habr.com

JUNK ABYSS - CMS, CMF и фреймворки

Продолжим тему начатую в статьях Бизнес в Интернете и веб-сайты и Становимся специалистами.

Здесь я хочу изложить свое понимание некоторых терминов, которыми пользуются веб-программисты. Хотел сказать, что собираюсь внести ясность, но нет, это будет именно мое понимание, так как есть некоторая путаница в этих терминах и нередко гарницы между понятиями несколько размыты, а каждый конкретный программист зачастую придает им свой оттенок. Вот я сейчас и придам этим понятиям свой

Итак, движки - в моем понимании это наиболее общее понятие, которое обозначает основу программной части сайта. К движкам относятся системы управления содержанием или контентом (Content Management System - CMS), каркасы или фреймворки управления содержанием (Content Management Framework - CMF) и, собственно, фреймворки или каркасы веб-приложений (Web Application Framework - WAF). В наименьшей степени к движкам можно отнести библиотеки и шаблонизаторы.

Библиотека - один или совокупность программных файлов, которые содержат классы и функции, выполняющие какую-то определенную задачу, например, соединение с базой данных, обработка XML-документов или отправка почты. Библиотеки подключаются к основным программным файлам и могут включаться в состав движка.

Шаблонизатор - это библиотека, занимающаяся выводом документов в браузер посредством заранее заданных шаблонов вебстраниц. Эта библиотека зачастую делает так много фантастической работы, что ее невольно хочется назвать движком, но все же на мой взгляд шаблонизаторы к движкам не относятся, но как и другие библиотеки могут быть включены в их состав.

Далее, что касается CMS, CMF и WAF (или просто фреймворк) вносят наибольшую путанницу, вероятно, это связано с тем, как они завоевывали популярность в массах. Замечу сразу, что специальных исследований по истории развития движков я не проводил - это мой субъективный взгляд на ситуацию. Сначала появилось много различных CMS, и они становились все популярнее среди пользователей. Потом появились фреймворки для веб-приложений (WAF), которые набирали свою популярность в среде программистов, так как в отличие от CMS не предоставляли для пользователей готового интерфейса для работы. Следующим шагом была попытка некоторых из разработчиков CMS приблизить по гибкости свои системы к фреймворкам, т. е. по сути можно сказать, что они предоставляют каркас для будущего сайта, но уже с готовой админкой и некоторыми встроенными средствами, доступными рядовому пользователю. Такие CMS стали называться CMF, хотя по сути они очень далеки от тех фреймворков, которые WAF - это как раз и вносит наибольшую путаницу, поскольку в обиходе, когда говорят слово "фреймворк", чаще всего подразумевают именно WAF, хотя само слово присутствует и в одной, и в другой аббревиватуре.

К наиболее известным CMF можно отнести TYPO3, MODx, Drupal, Joomla и т. д., а к наиболее популярным фреймворкам: Zend Framework, CodeIgniter, symfony, CakePHP и др. В качестве подтверждения моей версии приосхождения понятия CMF, я хотел привести ситуацию на сайте MODx: modxcms.com - аббревиатура CMS заложена в само доменное имя сайта, тогда как в шапке сайта они написали "Content management framework", т. е. CMF. Однако же со временем эта надпись почему-то исчезла с шапки сайта (хотя встречается ниже по тексту), а в заголовке сайта мы можем прочитать "Content management system, framework, and more" - вероятно споры о том, чем является данный движок велись и в самой среде разработчиков, что привело к появлению такого компромисного заголовка... Впрочем, возможно, это SEO-оптимизаторы настояли, чтобы в заголовке была более раскрученная фраза. Вобщем, пора дать свое определение этим понятиям.

CMS - это движок сайта, предоставляющий определенный набор стандартных возможностей, таких как, прежде всего, ввод и управление содержимым сайта, а именно содержимым статических страниц, содержимым меню сайта, ленты новостей, реже блогов с комментариями. Иногда CMS бывают узко-специализированные, вроде тех же блог-движков или интернет-магазинов. Форум - другой пример узко-специализированной CMS. В CMS, как правило, включают один или несколько типовых дизайнов, называемых темами или скинами.

CMF - это CMS, развившаяся в плане гибкости и универсальности за счет увеличения числа настроек, а также благодаря расширяемости функционала за счет модулей, плагинов, сниппетов и т. д., плюс унифицированность общих принципов работы движка и взаимодействия с кодом сторонних разработчиков (хуки, спец-тэги и т. п.)

Да, вы не ослышались, CMF - с моей точки зрения фреймворком не является или является им весьма условно. Поскольку в принципе, любая CMS является неким каркасом для будущего сайта, а именно это понятие, является переводом английского слова "framework". Вот взять, например, Wordpress - этот движок был и остается CMS и не пытается себя позиционировать фреймворком, в то время сколько различных не-блоговых сайтов было построено на нем, благодаря его унифицированности работы и принципов взаимодействия с шаблонами и плагинами разработчиков, просто не счесть. Даже в моем портфолио есть одна такая работа (www.mnspolt.gov.ua). Где грань? На мой взгляд, фреймворк - это нечто иное, а именно:

Фреймворк - каркас будущего сайта или веб-приложения, представляющий собой в самом простом варианте набор библиотек и минимальных правил их взаимодействия, обычно выраженных в виде документации, но иногда частично заложенных в ядре фреймворка. Иногда фреймворки также включают в себя некоторые средства для ускорения разработки, называемые скаффолдингом, которые представляют собой автогенераторы файловой структуры приложения, некоторых рутинных участков кода, структуры базы данных и прочее. Отмечу также, что фреймворки в своей реализации обычно воплощают так называемые паттерны проектирования. Данный термин выходит за рамки этой статьи, но скажу лишь, что важнейшим из них для веб-разработчика является паттерн MVC, который предполагает разделение данных (модели), логики (контроллера) и дизайна (представления) веб-приложения. Если быть более точным, то к модели относится и весь код по извлечению и сохранению этих данных в их хранилище, не обязательно это сервер БД. А к представлению относятся шаблоны и шаблонизаторы, ответственные за представление данных в различных форматах.

Напоследок, несколько абзацев о выборе движка. Прежде всего он диктуется функционалом и гибкостью, что редко сочетается вместе в рамках одной CMS. Поэтому, когда возникает необходимость что-нибудь убрать, добавить или переделать, зачастую это требует вмешательства в ядро движка со стороны программиста, а это не есть хорошо по ряду причин. Во-первых, код этот писался без расчета на то, что его будут изменять пользователи, а значит, даже если это не запрещено лицензией, то все равно ваши изменения будут вылазить вам боком при обновлениях движка. Во-вторых, от того, как написан код некоторых CMS, волосы дыбом встают - разбираться в чужом коде, который писался без соблюдения определенных правил и паттернов, задача порой не из легких.

И хотя в некоторых современных CMS и особенно CMF гибкость достигает немалых высот, все же порог вхождения для разработчика может оказаться достаточно высок из-за огромного числа всевозможных настроек в админ-панели. Другим недостатком продвинутых в плане универсальности движков является та цена, которую они платят за свою универсальность, а именно - быстродействие. Сразу на ум приходит движок Wordpress, который предоставляет достаточно обширные возможности по расширению и видоизменению функционала сайта, но по мере его расширения превращается в невероятного тормоза.

В то же время фреймворки представляют максимальную гибкость при создании проекта, так как происходит это практически с нуля. В принципе даже существующие правила взаимодействия библиотек в фреймворке, не являются догмой, но лишь неким указанием, как это можно сделать по умолчанию, в то время как каждый разработчик волен использовать библиотеки фреймворка так, как ему заблагорассудится. Не редко библиотеки одних фреймворков используются в составе других. С другой стороны, недостатком фреймворков является недостаточное количество готовой функциональности, которая частично решается также за счет дополнительных библиотек и модулей сторонних разработчиков.

Мой выбор. Это целая история, которая еще не закончилась Начинал, я как и большинство веб-разработчиков с изучения статического HTML, чуть позже я пытался писать сайты отдельными PHP-скриптами (одна страница - один скрипт). Потом прошел эру CMS/CMF, но окончательно разочаровавшись, я понял, что ни одна из них полностью не сможет удовлетворить мои потребности в гибкости и быстродействии. Началась эра фреймворков. Сейчас я более менее изучил CodeIgniter, делаю на нем некоторые проекты (childrenet.com и др.), но поиск оптимального фреймворка еще не закончен. Сейчас смотрю на CIEX и Kohana.

Еще иногда на выбор влияет целесообразность... точнее она влияет всегда, просто не каждый проект есть смысл писать с нуля, используя фреймворк. Иногда неплохо иметь для быстрой реализации тех или иных задач некоторую CMS. На данный момент, такой CMS для меня является Maxsite, отчасти по той причине, что он написан на CodeIgniter, что дает некоторые возможности по использованию самого фреймворка внутри CMS.

Так какой же он все-таки есть этот оптимальный выбор на мой взгляд? В идеале для своих проектов я бы хотел найти/написать CMS выполненную в лучших традициях оптимального фреймворка, на поисках которого я пока и застрял, это позволило бы в полной мере сочетать преимущества хорошего фреймворка и CMS, дающей быстрый результат.

Основныи критериями хорошего фреймворка я считаю:

В принципе все эти требования в той или иной степени соблюдены в CI (скаффолдинг самописный, слегка недоделанный), но не все мне в этом фреймворке нравится как реализовано, поэтому пока еще нахожусь в поиске других вариантов, временами задумываюсь о написании собственного фреймворка, но отсутствие большого количества свободного времени пока меня останавливает.

junkabyss.com

Что такое CMF, CMS. Сравнительный анализ популярных CMS для разработки сайтов.

УДК:

Арсирий Е.А.

Винин П.С.

Одесский национальный политехнический Университет

адрес: пр-т Шевченко, 1а.

Индекс 65000?

Резюме: В данной статье приводятся основные требования к созданию CMF, описываются технологии использующиеся сегодня при создании CMS. Проводится сравнение основных популярных систем CMS использующихся при создании сайтов.

Keywords: CMS - CMF - Drupal - software framework - Application Programming Interface,API - 1,

Введение

     С появлением новых информационных технологий наблюдается  постоянный рост требований к интерактивности и удобствам  пользования веб-сайтов (юзабилити). На смену сайтам-страничкам и сайтам-визиткам приходят так называемые «управляемые» сайты, когда пользователю предоставляют возможность редактировать структуру сайта независимо от его наполнения, размещать новый контент (информацию), не прибегая к помощи разработчика, управлять содержимым — любым информационно значимым наполнением информационного ресурса (например, веб-сайта) — тексты, графика, мультимедиа — вся информация, которую пользователь может выгрузить: новости компании, специальные предложения или акции, каталог продукции или услуг компании и прочее. Претерпевает большие изменения и интернет-торговля. Сайты-каталоги (веб-витрины), интернет-магазины с традиционными корзиной покупок и формой оформления заказа on-line вытесняют полноценные CRM системы (Customer Relationship Management - управление взаимоотношениями с клиентами) на современных Интернет ресурсах.

Постановка задачи

Для таких систем характерна работа каждым клиентом индивидуально. Это и «Личные корзины», позволяющие набирать товары, которые вы покупали ранее, «История покупок», ведущаяся с начала вашей регистрации в Интернет-магазине, «Система накопительных скидок», «Система поддержки нескольких адресов доставки» и т.д. В настоящее время в сети появляется все больше всевозможных «on-line» сервисов таких как произвести оплату кредитной картой on-line, оплатить услуги доступа Интернет, пополнить счет на мобильном телефоне, сделать электронную фотографию, смонтировать видео-ролик и т.д. Все перечисленное приводит к тому что современные веб-разработки это полноценные программные продукты (дистанционные информационные системы), требующие для своего создания полноценную программную среду или Программный фреймворк (англ. software framework) — программная среда, позволяющая строить сложные приложения используя заранее представленный единый интерфейс или API.(Интерфейс прикладного программирования (англ. Application Programming Interface, API — набор готовых констант, структур и функций, используемых при программировании пользовательских приложений и обеспечивающих правильное взаимодействие между пользовательским приложением и операционной системой. ) Программный фреймворк может включать вспомогательные программы, библиотеки кода, язык сценариев и другое программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. Общее отличие от библиотеки в том, что выполняет код написанный для него, а не исполняется сам. Пример программного каркаса — CMF (Content Management Framework), а пример библиотеки — модуль электронной почты. Также, в отличие от библиотеки, которая объединяет в себе набор близкой функциональности, фреймворк содержит в себе большое число разных по тематике библиотек. При этом использование единого API позволяет безболезненно развивать фреймворк и использовать собственные расширения в будущих проектах. Программисты каждой компании сами решают писать ли собственный движок для управления содержимым или использовать готовые решения. Для создания собственных готовых решений используют один или несколько software framework's исходя из нужд проекта. В сегодняшние дни скорость при создании программного продукта важна не меньша качества работы. Оперативность появления на рынке и реакция на изменения имеют высокую стоимость в данной сфере. Соответственно легче использовать готовые наработки чем писать каждый раз один и тот же функционал для проектов. Поэтому разработки отдельных ведущих специалистов объединяются что дает так называемый Content Management Framework (CMF) — каркасная система для управления содержимым. CMF — это инструментарий для создания систем управления содержимым, а также веб приложений вообще. Ряд CMS, предоставляющих API для расширения своей функциональности, претендуют на звание CMF. К примерам CMF, также являющимися готовыми CMS, можно отнести такие системы, как Plone, MODx, Drupal, TYPO3, Typolight, UMI.CMS, OPENKit.

По языкам программирования CMS присутствуют практически во всех, поддерживаемых ООП и не только: Java, PHP, Python, Ruby, Perl, JavaScript и другие. Как правило, на основе CMF создаются CMS — готовые системы управления содержимым, а те, в свою очередь, служат основой для создания полноценных сайтов.

Среди бесплатных software framework's существует множество систем, имеющих характерные особенности CMF. Данные системы ориентированы на профессиональных разработчиков, и обычно представляют собой набор библиотек, объединенных общей парадигмой. Как правило, такие системы предоставляют практически неограниченный набор возможностей для программиста, облегчая процесс разработки сайта и расширения его функционала в будущем, за что, впрочем, приходится платить необходимостью более глубокого ознакомления с системой.

Таблица 1. Бесплатные SF имеющие характерные особенности CMF

Название  

Платформа  

Поддерживаемые БД  

Текущая версия  

Лицензия  

Zend Framework

PHP 5

MySQL, Oracle, PostgreSQL, MS SQL, SQLite

1.9.2

BSD

CakePHP

PHP 4/5

PostgreSQL, MySQL, SQLite

1.2.3.8166

MIT

Symfony

PHP 5

MySQL, Oracle, PostgreSQL, MS SQL, SQLite

1.1

MIT

CodeIgniter

PHP 4/5

MySQL, Oracle, PostgreSQL, MS SQL, SQLite

1.7.1

BSD

YII

PHP 5

MySQL, MS SQL, SQLite

1.1.x

BSD

Некоторые из приведенных выше CMF одновременно обладают свойствами CMS. Постараемся выделить бесплатные системы, совмещающие в себе свойства CMS и CMF. Данные системы могут быть отнесены как к классу систем управления содержимым, так и каркасных систем. Другими словами, данные системы являются в достаточной степени расширяемыми и настраиваемыми, чтобы на их основе можно было создать программный продукт с произвольным набором возможностей, но с другой стороны, данные системы могут быть рассмотрены и как дистрибутивы, для установки и использования которых не требуются глубокие познания в программировании.

Таблица 2. Бесплатные системы, совмещающие в себе свойства CMS и CMF

 

 

C помощью этих систем чаще всего создаются дистанционные программные продукты. Для их создания всего используются языки PHP — Cake, Zend, Xevian. В сегодняшние дни скорость при создании сайта важна не меньша качества работы. Оперативность появления на рынке и реакция на изменения имеют высокую стоимость в данной сфере. Соответственно легче использовать готовые наработки чем писать каждый раз один и тот же функционал для проектов. Грамотно созданные классы и функции можно использовать во всех проектах, и расширять имеющийся API бесконечно. Собственно и сами системы управления содержимым, создающиеся на основе SMF претерпели колоссальные изменения. Сегодня систе́ма управле́ния содержи́мым/конте́нтом (англ. Content management system, CMS) — компьютерная программа или система, используемая для обеспечения и организации совместного процесса создания, редактирования и управления текстовых и мультимедиа документов (содержимое или контента). Обычно это содержимое рассматривается как неструктурированные данные предметной задачи в противоположность структурированным данным, обычно находящимися под управлением СУБД. Такая система не нуждается в профессиональном разработчике для поддержки и расширения функциональности. Появилась новая задача — оперативное добавление и управление информацией. Появилась новый вид деятельности контент-менеджер, -обозначает род профессиональной деятельности — редактор сайта. При эта работа требует минимальных знаний языков разработки и разметки страниц. Большая часть современных систем управления содержимым реализуется с помощью визуального (WYSIWYG) редактора — программы, которая создаёт HTML-код из специальной упрощённой разметки, позволяющей пользователю проще форматировать текст.

Сегодняшний принцип работы CMS: генерация страниц по запросу. Системы такого типа работают на основе связки «Модуль редактирования → База данных → Модуль представления». Модуль представления генерирует страницу с содержанием при запросе на него, на основе информации из базы данных. Информация в базе данных изменяется с помощью модуля редактирования. Страницы заново создаются сервером при каждом запросе, что в свою очередь создаёт дополнительную нагрузку на системные ресурсы. Нагрузка может быть многократно снижена при использовании средств кэширования, которые имеются в современных веб-серверах. Ранее используемый способ - генерация страниц при редактировании. Системы этого типа суть программы для редактирования страниц, которые при внесении изменений в содержание сайта создают набор статических страниц. При таком способе в жертву приносится интерактивность между посетителем и содержимым сайта.

Сегодя используется способ, сочитающий в себе преимущества первых двух. Он может быть реализован путём кэширования — модуль представления генерирует страницу один раз, в дальнейшем она в несколько раз быстрее подгружается из кэша. Кэш может обновляться как автоматически, по истечении некоторого срока времени или при внесении изменений в определённые разделы сайта, так и вручную по команде администратора. Другой подход — сохранение определённых информационных блоков на этапе редактирования сайта и сборка страницы из этих блоков при запросе соответствующей страницы пользователем.

Сейчас существует множество готовых систем управления содержимым сайта, в том числе и бесплатных. Тем не менее наличие проприетарных CMS все еще актуально.

Drupal, Joomla и WordPress — бесплатные системы управления, на основе которых можно создавать функциональные и легко управляемые сайты без серьезных финансовых затрат. Попробуем провести анализ и сравнить эти системы между собой. Мы выбрали наиболее важные аспекты, которые скорее всего заинтересуют разработчиков, планирующих построить программный продукт на базе cms/cmf решений.

Для лучшего понимания предметной области, а также для установления порядка была создана такая методика, как классификация. Классификация — это разделение общего множества на частные по выбранным критериям, то есть попросту деление на группы по общим признакам. Классификация требуется и в области систем управления, где она должна установить четкие разграничения между системами.

Классификация по степени открытости : все продукты можно разделить на две группы. В первую группу следует отнести все открытые продукты, во вторую — остальные (к остальным относятся коммерческие/проприетарные и бесплатно распространяемые продукты).

Теперь выделим наиболее важные для разработчика и пользователя критерии и оценим их по 10ти бальной шкале для каждой из трех популярных систем

www.maxeff.org


Prostoy-Site | Все права защищены © 2018 | Карта сайта