Обратная сторона Web

Введение

С распространением интернета и увеличения его влияния в обществе, все большее место занимает Web-программирование. Для упрощения Web-разработки создается все больше и больше систем, поэтому наиболее целесообразно поговорить именно на тему новых систем Web-разработки. Наибольшее влияние в Web-разработке на текущий момент имеют CMS(Control managment system) и Framework. Наиболее яркими представителями данных систем являются:
  • CMS:
    • Wordpress
    • Drupal
    • Joomla
    • Instant
  • Framework:
    • CakePHP
    • YII
    • Symphony

Различия между CMS и Framework

CMS и Framework выполняют одни и ту же функцию - упрощение и ускорение написания проектов для Web-программистов, однако это совершенно два разных подхода в Web-разработке. CMS - является информционной системой для создания, управления и редактирования содержимым(контентом). Достоинства таких систем в том, что все наиболее распространенные модули на сайте уже написанны и достаточно лишь просто включить модуль на сайте и наполнить его содержимым, который хочет пользователь. Такая система отлично подходит для шаблонных сайтов, где header и footer не меняются в зависимости от страницы, а main блок изменяет только модуль который надо отображать на той или инной странице. Так же в таких системах, пользователю не обязательно быть программистом, чтобы создать сайт, так как такие системы имеют интуитивно-понятный интерфейс и просты в управлении. Однако если требуетсся доработка, переработка или написание совершенно уникального модуля, то тут программисты очень часто сталкиваются с проблемами, т.к. приходиться разбираться как минимум с сотнях строках кода. Связанно это с тем что готовые модули в таких системах пишуться максимально функциональными, а соответственно возможно внутреннее влияние подмодулей друг на друга, из-за этого программисту недостаточно перебрать подмодуль, а так же посмотреть его влияния на другие и влияние остальных на него (не учитывая наихудший вариант взаимодействия модулей). Так же необходимо в данные моменты учитывать, что порой недостаточно изменить модуль на выводе, а требуется порой и изменение этого модуля в административной части, что еще больше увеличивает сложность и временные затраты. Поэтому сделав итоги, что данная система подходит идеально для написания шаблонных сайтов и сопровождения, однако становиться довольно таки большой проблемой при увеличении сложности сайта. Что же касается Framework - они являются полной противоположностью CMS, они не имеют никаких готовых модулей и отсутствие административной части. Однако в них реализованы многие системы и классы, к примеру, система MVC (model view controller) или же класс для работы с БД. Классы для работой с БД позволяют не писать программистам громоздкие запросы в БД, а достточно лишь указать откуда получить, что получить и каким образом... Так же система MVC позволяет полностью контроллировать вывод на странице(что, где и как), а так же упрощает читабельность кода. Программисту не требуется искать и разбираться в тысячах строках кода, чтобы узнать где и что выводить или добавляется, т.к. он уже знает что работа с БД на текущей странице происходит в соответствующей модели, передача на клиент в соответствующем контроллере и вывод в соответствующей view. Так же framework позволяет интегрировать напрямую php код в html, а так же большая часть framework разграничивают контроллеры на два вида (обычный и ajax), что позволяет еще больше упростить поиск в проекте, так как программист знает где искать при загрузке страницы и где искать при получении данных с БД и вывод данных на страницу без ее перезагрузки. Именно поэтому системы framework используют при написании сложных сайтов, так как присутствует разграничение кода и не требует дополнительных исследований кода, чтобы найти его "концы"

Сравнение CMS

Так как данных систем слишком много, чтобы сравнить их всех, возьмем одни из самых распространненых CMS: Wordpress и Joomla.

Wordpress

Существуют две линейки WordPress: 2.0.* и 2.1+. Первая все еще поддерживается и к ней выпускаются обновления безопасности. Но новые возможности появляются только в линейке 2.1+. Разделение произошло после того, как было решено отказаться от поддержки MySQL<4.0. За счет оптимизации запросов, скорость работы новых версий выше. Также сыграло свою роль и то, что в WordPress'е активно стал использоваться AJAX, которому требуется UTF-8. WordPress обладает очень большой документацией, но к сожалению она только на английском языке. Документация построена таким образом, что позволяет довольно быстро найти нужный ответ. Практически каждая статья имеет несколько примеров, а также ссылки на смежные вопросы. Что касается поддержки пользователей, то она осуществляется через форумы добровольцамими. Также существует много блогов, где их авторы выкладывают и делятся самыми разными находками и решениями по WordPress. Так же в Wordpress входит стандартный плагин Akismet, который является антиспамом. Так же в возможностях Wordpress возможно создавать черные списки и фильтры из слов, с помощью которых возможно блокировать абсолютно любой комментарий, который будет содержать запрещенное слово. Что касается установки капчи, то тут она очень просто, достаточно лишь активировать ее в админ-панели. Визульный редактор стандартно используется немного урезанный TinyMCE и рядом же простой текстовый редактор. Однако в Wordpress есть возможность с помощью сторонних плагинов добавлять в редактор кнопки. Таким образом в редактор можно получить функции для добавления видео или аудио. Одно из основных преимуществ Wordpress является то, что для него созднны тысячи готовых шаблонов, на очень хорошем дизайнерском уровне, которые очень легко изменяются, а так же есть возможность создавать собственные шаблоны.

Joomla

Joomla в отличии от Wordpress имеет официальную документацию с переводами, а так же идет к стадии написания авторских статей. C поддержкой пользователей все неоднозначно, т.к. их две, это joom.ru и порталовцы. А вот в борьбе со спамом Joomla очень сильно уступает, т.к. кроме как реализованной капчи не имеет абсолютно ничего больше. Что же касается графического редактора, то Joomla в этом вопросе очень приуспела. Исопльзует она бесплатный редактор JCE, однако разработанный непосредство для этой CMS и может составить очень хорошую альтернативную конкуренцию платному WysiwygPro. В плане шаблонизации у Joomla версии 1.0.Х она отсутсвует, в ней есть всего лишь один большой шаблон, позволяющий на PHP создавать общую структуру сайта и расположение сайтов, но шаблонизация отдельных элементов отсутствует. Однако вместо этого Joomla имеет систему модулей, которые объединяются в позиции и затем подгружаются в нужных местах шаблона. Модули можно привязывать к конкретным страницам, а так же выводить различными способами по ходу страницы.

Сравнение Framework

Сравнивать Framework как CMS по факту невозможно, т.к. в них практически ничего не установленно заранее, поэтому сравнение будем производить по четырем параметрам:
  • Простота
  • Производительность
  • Гибкость
  • Безопасность
Простота. CakePhp имеет небольшие проблемы с установкой, которые не документированы, необходимо менять три файла .htaccess чтобы установка прошла успешно. YII же очень прост в установке, достаточно запустить лишь файл yiic, который все сделает, при этом имеет подробную документацию. Так же ни в одном из framework не требуется изучения шаблонизаторов, типа Smarty, что упрощает их освоение. Производительность. Для тестирования данного параметра, обоим framework необходимо было вывести лишь "Hello World". Тест выглядил таким образом: контроллер устанавливал значение переменной в строку "Hello World" а затем эта переменная передавалась представлению для вывода на основной HTML странице. Количество запросов в секунду выяснялось при помощи утилиты ApacheBench с такими параметрами: «ab -t 30 -c 10 URL». Результаты тестов предоставленны на рисунке 1. Рисунок 1 - Результаты тестов Гибкость. CakePhp завязан на соглашениях, он требует определнного именования файлов, классов, базы данных, методов... YII имеет тот же принцип, однако он менее завязан на соглашениях чем CakePhp. Оба фреймворка имеют возможность вставки более одного представления, т.е. прогрмаммист может использовать специальный header, к примеру, или виджет. Безопасность. Система контроля доступа CakePhp в отличии от YII в разы труднее для понимания, для генерации файлов схем и ACLs используется генератор кода, однако контролировать этот процесс намного сложнее чем в YII. К тому же в YII возможно усилить стойкость паролей самому, в отличии от CakePhp (если хэшировать пароли самомстоятельно, то приложение работать не будет)

Выводы

В ходе статьи мы кратко рассмотрели некоторые CMS и Framework и провели небольшой сравнительный анализ, а выбирать в какой среде работать каждому самому (несмотря на все минусы CackePhp перед YII, пишу я именно на нем).