Выбор фреймворка для нагруженных информационных систем и веб-приложений — сравнение Yii с другими php-фреймворками

22.06.2016 292
Количество просмотров
#Разработка

Почему Yii?

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

Изобретать новый велосипед не хотелось по нескольким причинам:

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

Как говорится, - поисковик в помощь. Мы начали искать подходящий фрэймворк. Многие блоггеры любят описывать свои муки поисков, нудя о героическом выборе, мы не долго мучались. Выбор практически сразу пал на Yii. Требований к фреймворку по сути было три:

  1. Наличие, хотя бы, базовой документации на русском, чтобы не тратить время на перевод для разработчиков без знания языка (слышится голос с дальних рядов, мол разработчик должен читать на английском, но поверьте в половине случаев наличие информации на русском намного ускоряет процесс обучения);
  2. Безопасность, WP тогда гремел во всех баг-трекерах, даже кулхацкеры научились делать XSS атаки.
  3. Скорость, понятие конечно условное, но «какой русский не любит быстрой езды»!

Напоминаем, речь идет о 2012-м. Для понимания приведём здесь график интереса к фреймворкам на php по данным Google:

График интереса к php-фреймворкам

 

Yii был на подъеме и он отвечал нашим основным трем требованиям, плюс:

  • Фрэймворк активно развивался, уже сформировалось грамотное русскоязычное сообщество;
  • Даже по объему репозитория понятна его легковесность по сравнению с такими китами как Zend и Symfony;
  • Множество источников указывало на быстроту и относительную безопасность фреймворка, на этом мы остановимся ниже;

Базовые фишки фреймоворка также общеизвестны:

  • MVC - Модель-представление-контроллер
  • DAO и ActiveRecord для работы с базами данных
  • Кэширование страниц и отдельных фрагментов
  • Перехват и обработка ошибок
  • Ввод и валидация форм
  • Аутентификация и авторизация
  • Использование AJAX и интеграция с jQuery
  • Генерация базового PHP-кода для CRUD-операций
  • Поддержка тем оформления для их лёгкой смены
  • Возможность подключения сторонних библиотек
  • Миграции базы данных
  • Автоматическое тестирование
  • Поддержка REST

Немного о самом Yii

Информация из вики:

"История Yii началась 1 января 2008 года, как проект по исправлению некоторых изъянов во фреймворке PRADO (PHP Rapid Application Development Object-oriented), ставшего в 2004 победителем «Zend PHP 5 coding contest»

Фреймворк PRADO был попыткой перенести ASP.NET на платформу PHP, включая ViewState, PostBacks, Page_Load и OnClick. Если посмотреть исходный код, то можно увидеть, что некоторые куски кода просто скопированы из ASP.NET (например, разделение на Rare Fields и Occasional Fields в классе Control с целью оптимизации по памяти, которое имеет смысл в .NET, но представляет сомнительную ценность в PHP).

PRADO унаследовал от ASP.NET почти все отрицательные стороны: медленно обрабатывал сложные страницы, имел крутую кривую обучения и был довольно труден в настройке.

В определенный момент автор (Qiang Xue) понял, что PHP-фреймворк должен быть построен несколько по-другому, и вот в октябре 2008 года, после более 10 месяцев закрытой разработки, вышла первая альфа-версия. 3 декабря 2008 был выпущен Yii 1.0"

На данный момент Yiiпредставлен в версии 2.0. Последний релиз - 2.0.8 от 28 апреля 2016.

Фрэймоворк продолжает активно развиваться.

Сравнения с другими фрэймворками

Количество строк кода

 По этому значению можно косвенно судить о сложности фреймворка/CMS. Начнем с самых ёмких:

Фреймворки

  • Symfony - 10 000 000 (10 миллионов, Карл!)
  • Zend - 4 200 000
  • Yii - 280 000
  • CodeIgniter - 40 000
  • Kohana - 12 000
  • Fat Free Framework - 4 000

CMS

  • Joomla - 800 000
  • Drupal - 180 000
  • Wordpress - 140 000 

Для сравнения, количество строк в операционных системах:

  • Debian - 65 000 000
  • Gentoo - 5 500 000
  • OpenOffice - 25 000 000

Информация отсюда: http://whydrupal.ru/sravnenie-php-freimvorkov-kohana-yii-symfony-codeigniter

 

Сравнения производительности: 

    1. Так называемый hello worldтест, для первого Yii.
      Сравнение производительности Yii против других php фреймворков
      ресурс: http://www.yiiframework.com/performance/

      Как видно в простом тесте еще Yii1 демонстрировал преимущество в производительности.

  1. Данные бенчмарка php-framework-benchmark
    Данные php-benchmark
    Свежие тестовые данные с официальной страницы бенчмарка. Yiiопережают только микрофреймвори, но последние нерационально использовать для создания чуть более сложных систем.

  2. Сравнение с CMS Drupal.
    Сравнение Yii и Drupal
    Конечно речь идет о сравнении с полноценной CMS, но это лишний раз подтолкнуло нас к написанию своего каркаса Taskon наYii2.

    Ресурс: http://erickennedy.org/Drupal-7-Reasons-to-Switch
  3. Тест yii1 по сравнению с другими фреймворками с официального сайта:
    Сравнение Yii с официального сайта

Каркас Taskon

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

 

Кстати наш каркас вы можете бесплатно попробовать для создания своих сайтов и веб-приложений, к тому же он хорошо документирован. Более подробно можно почитать на специальной странице каркаса Taskon.

Понравилось? Подпишись на обновления!

Мы страемся публиковать в данном разделе только полезный и уникальный контент для рынка. По этому подпишись и ты будешь первым, кто получит уведомление о свежей публикации
Теперь вы подписаны на обновления блога.
Теперь вы подписаны на обновления блога.