На рынке ПО представлено множество вариантов классических CMS. Все они различаются условиями распространения и функциональными возможностями. Есть настоящие монстры в этой области (тот же «Битрикс»), обладающие всеми функциями, которые только могут присниться самому изощренному клиенту.
Статья опубликована в журнале «IT Спец» №11, ноябрь 2007.
CMF вместо CMS
Несмотря на это, у всех CMS есть один минус — недостаточная гибкость в настройке. Зачастую разработчики систем управления контентом поставляют со своим детищем множество ненужных модулей, за которые приходится платить. А что если требуется организовать, скажем, портал определенной направленности? Например, новостной. На нем вовсе необязателен форум или гостевая книга. Минимум, что нужно для такого проекта: удобный интерфейс для создания новостных лент, плюс возможность передачи новостей клиентам с помощью популярных технологий (RSS, e-mail и т. д.). При таком раскладе куда проще взять специализированный фреймворк и реализовать весь необходимый функционал с его помощью. Это будет намного проще, удобнее и надежнее.
Для понимания реальной выгоды рассмотрим наиболее сильные стороны CMF:
- экономия финансовых средств. Нет смысла покупать, если можно найти хорошую бесплатную альтернативу, на поддержку которой не потребуется больших вложений. В случае с фреймворком — экономия налицо. Берем лишь необходимые компоненты и используем в своих целях;
- простота интеграции. Когда сайт уже готов и нужно добавить необходимую функциональность, гораздо проще перестроиться на CMF, нежели переходить на полноценную платформу CMS.
Надежность, гибкость, простота
Mzz (www.mzz.ru) — новая платформа для разработки web-приложений, основанная на классической идее разделения бизнес-логики и представления (MVC). Обладая необычайной гибкостью CMF, на основе данного пакета можно собрать практически любое приложение для web.
Особенности Mzz
Бесплатность
Весь фреймворк распространяется под лицензией LGPL, которая предоставляет свободу в применении.
Гибкость
Благодаря хорошо продуманной архитектуре Mzz можно использовать независимо от масштаба проекта. Будь то обычный сайт-визитка, или корпоративный портал, или современный интернет-магазин.
Поддержка современных технологий
Новые технологии, входящие в понимание Web 2.0 (Ajax, Mash-up и т. д.), могут без проблем интегрироваться с Mzz.
Загрузка модулей из шаблонов
Мотивом для создания новой платформы стала идея загрузки модулей из шаблонов. Синтаксис функции load:
{load module="" action="" section="" <имя>="значение" ...}
Описание аргументов:
module— имя загружаемого модуля, обязательный параметр;action— имя действия загружаемого модуля, обязательный параметр;<имя>, ...— аргументы, передаваемые в запускаемый модуль;section— имя раздела, в контексте которого будет запущен модуль, за счет чего достигается возможность обслуживания модулем различных разделов, обладающих одинаковой функциональностью.
Пример — выполнение действия list модуля «Новости» в текущей секции:
{load module="news" action="list"}
Меньше ошибок в коде
Качество кода достигается использованием техники разработки через тестирование TDD. Суть данного метода заключается в том, что меняется привычная последовательность разработки. Сначала пишутся тесты для будущего кода, тщательно проверяются, а уже затем пишется сам код, который должен будет пройти тест.
Собственный ORM
В Mzz используется собственная разработка ORM, базирующаяся на основе «The Data Mapper Pattern», позволяющая манипулировать доменными объектами системы.
CMS на основе Mzz
В будущем разработчики планируют выпустить свой вариант CMS на основе Mzz.
Готовые примеры
Для желающих разработчики создали несколько готовых примеров — модулей. Среди них: новости, страницы, каталог с динамическими свойствами, файловый менеджер, галерея, меню, обмен личными сообщениями, голосование, форум. Несмотря на то что все модули являются лишь наглядными примерами, их можно использовать в реальных проектах без дополнительных изменений.
Системные требования
Mzz устойчиво работает как на Unix-, так и на Windows-серверах. Для работы фреймворка необходимо следующее программное обеспечение: интерпретатор PHP-версии не ниже 5.1.4, наличие PHP-модулей — PDO, PDO_MYSQL, PCRE, сервер баз данных MySQL 4 (желательно не ниже 4.1.x версии) или 5, Web-server Apache 1.x/2.x (с установленным модулем mod_rewrite) или IIS 6 (с установленным модулем rewrite).
Легко читаемый код
Весь код фреймворка написан в соответствии с парадигмой объектно-ориентированного программирования, поэтому профессиональным разработчикам не составит большего труда в нем разобраться.
Безопасность
Для повышения безопасности в ядре фреймворка реализованы методы для защиты от некоторых наиболее часто возникающих проблем, например воровство сессий, session fixation, поступление опасных данных и т. д.
Хорошая документированность
Хоть mzz и является бесплатным проектом, разработчики потрудились и написали хорошую документацию. В описании есть все необходимое для того, чтобы начать использовать данный framework. Как известно, проектов для open source скудная документация — основная проблема. Здесь она решена.
Термины
- CMF (Content Management Framework) — фреймворк (набор инструментов, библиотек, API), предназначенный для построения собственной CMS.
- ORM (Object-relational Mapping) — технология программирования, связывающая базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».
- TDD (Test Driven Development) — техника программирования, используемая при «экстремальном программировании». Сначала готовятся тесты для программ, а затем уже пишется программа под них.
О проекте Mzz
На вопросы отвечает Иван Курносов — профессиональный Web-программист.
Расскажите немного о вашем проекте?
Основные идеи и концепции mzz были придуманы в сентябре 2005 года, когда каждый из нас вынашивал идею написания очередной универсальной CMS. И примерно в это время мы попробовали написать что-то совместно. Сперва мы рассматривали mzz лишь как полигон и способ набраться опыта в проектировании, но через полгода поняли, что получается весьма неплохо, и решили продолжить совместную деятельность. Сейчас mzz — проект с устоявшейся архитектурой, который мы и сами используем по назначению.
На каких клиентов ориентирован ваш проект?
Мы как девелоперы фреймворка mzz не делаем никаких коммерческих предложений, а просто даем возможность людям (программистам в первую очередь) посмотреть, как, по нашему мнению, стоит писать web-приложения. И если mzz будет востребован — этого будет вполне достаточно, чтобы сказать, что мы достигли той цели, к которой стремились.
Планируется ли в будущем сделать платную версию mzz?
Нет, не планировалось и не планируется. Мы приверженцы свободного и качественного ПО.
Как вы считаете, почему среди огромного числа абсолютно бесплатных CMS многие выбирают коммерческие решения (Bitrix, NetCat и т. д.)?
Их выбирают прежде всего руководители организаций, т. е. люди, которые увидели красивые слайды на красивой конференции и которые не будут работать непосредственно с кодом. Залог успеха — грамотная реклама, а хорошо прорекламировать можно практически все что угодно.
Одна из основных проблем разработчиков сетевых приложений – безопасность. Как обеспечивается безопасность конфиденциальных данных в mzz?
Mzz — лишь инструмент для реализации конкретных задач, облегчающий и ускоряющий их решение. Встроенные средства работы с данными автоматически экранируют всю поступающую информацию (если это необходимо), кроме того, ряд типичных методов атак (вроде session fixation и воровства сессий) устранены на уровне ядра (классов работы с сессиями). В зависимости от требований к защищенности приложения именно конечный программист будет реализовывать необходимый функционал.