Вступление
С недавним рефакторингом системы управления контентом eZ Publish в качестве приложения Symfony с полным стеком для широкой публики PHP должно быть интересно рассмотреть ее как решение для управления контентом. Мы в Netgen использовали его почти десять лет и хотели бы поделиться нашими причинами, почему в определенных случаях это хороший выбор.
Прежде чем углубляться в причины, по которым кто-то должен рассматривать eZ как решение CMS, давайте отметим несколько заявлений об отказе от ответственности и фильтров аудитории:
-
Если команда разработчиков действительно мала или проект представляет собой простой веб-сайт, то нет смысла рассматривать eZ. Есть много других решений, которые легче освоить.
-
если ваш веб-проект не нуждается в управлении контентом или эта часть проекта очень проста, то нет никакого хорошего стимула рассматривать eZ.
Этот пост о причинах, почему вы должны рассмотреть eZ, а не о том, чтобы похвалить его как окончательное решение. У него есть свои проблемы, такие как следующие:
-
В настоящее время eZ поставляется в виде двойного стека (версия 5. * с новым и устаревшим кодом), и это может стать препятствием для менее опытных команд. Недавно я обсуждал в нашем блоге гибридный подход, который мы сейчас используем, и вкратце: это не просто. Но это временная ситуация, которая вызывает некоторые плохие побочные эффекты, такие как путаница с двойной документацией и т. Д. Установка также может быть проблематичной, как недавно обнаружил редактор Sitepoint Бруно. Но к концу года eZ должна выпустить предварительную версию для разработчиков только с новым стеком. В следующем году первая стабильная версия может выйти на улицы (названная: eZ Publish 6 или eZ Platform).
-
Исторически сложилось так, что у него всегда была крутая кривая обучения. Это может быть причиной номер один, почему eZ не получил больше тяги за эти годы. С новым стеком, реализованным как приложение Symfony, это может измениться. Если оставить в стороне переходную ситуацию, когда некоторые функции еще не реализованы в новом стеке (следовательно, возвращаются к унаследованному), новый стек будет легче освоить, поскольку методы разработки более распространены (особенно для разработчиков Symfony) и менее специфичны. в эз.
-
Сообщество не очень большое. Некоторые предпочитают 10000 активных разработчиков продукта, но это не тот случай. На самом деле, сообщество достаточно активно для своего размера и состоит из людей из компаний и более крупных команд, которые используют eZ. И учитывая тот факт, что Symfony теперь является базовой средой PHP, сообщество может стать очень большим в ближайшее время.
Если вас не отпугивают проблемы, давайте сосредоточимся на хорошей стороне: причинах, по которым я думаю, что разработчики PHP должны рассмотреть новый стек eZ Publish для своего следующего контент-ориентированного веб-проекта.
1. Это с открытым исходным кодом
Да, для читателей этого портала это, безусловно, звучит очевидно, но это все же стоит подчеркнуть. По-прежнему много контента управляется с помощью программного обеспечения, разработанного как самими агентствами, так и собственными силами, более или менее закрытого источника. Как профессионал, который строит решения на основе CMS, я твердо думаю, что исходный код с открытым исходным кодом — это путь. Причин много: от практических, таких как устранение ошибок напрямую, без необходимости ждать решения поставщика, до более быстрых инноваций, поддерживаемых сообществом.
eZ Publish был открытым исходным кодом до 2000 года. Он не покорил мир за эти 15 лет, но, безусловно, оставил значительный след. Теперь он полностью переоформлен во второй раз. Он использует другие современные решения с открытым исходным кодом, такие как Symfony, и он также вносит свой вклад. Вы можете подумать, что открытый исходный код важен только для разработчиков, но очень важен и для деловых решений. Мы решили не создавать собственную CMS 10 лет назад и выбрали open-source. Одним из наших важных преимуществ является то, что клиент не будет заблокирован поставщиком, если он использует продукт с открытым исходным кодом, поддерживаемый активным сообществом. Клиенты узнают об этом все больше и больше, некоторые только после действительно плохого опыта с закрытыми исходными решениями.
2. Это предприятие
Хотя это может звучать как бизнес-тема, это также связано с развитием. Корпоративный тег означает, что клиент может получить надежную поддержку от поставщика. Это также означает, что дорожная карта должна быть более «преданной». Это не означает, что он будет выполнен точно так, как он запланирован, но с корпоративным тегом вы должны ожидать, что проект будет поддержан компанией, которая сможет улучшить бюджет и спланировать будущие выпуски. С корпоративным тегом также можно ожидать четкого пути обновления, предоставляемого поставщиком для каждой новой версии. Эти черты обычно интересны для более сложных проектов, для клиентов, которые предпочли бы заплатить аванс, чтобы лучше контролировать риск и лучше планировать заранее. Это в основном решение по управлению рисками, идти на предприятие или нет.
eZ systems, компания, стоящая за eZ Publish, поначалу следовала более очевидной бизнес-модели с открытым исходным кодом: работала над проектами и имела ядро с открытым исходным кодом. Пять лет назад они начали меняться, и сегодня их модель отличается. Они работают на ядре и продают подписки для корпоративной версии (есть также бесплатная версия для сообщества под лицензией GPLv2). Они больше не работают над проектами, все реализации корпоративных экземпляров выполняются партнерской сетью или собственными силами клиента. Это может показаться простым делом, но не так много поставщиков успешно используют такую модель. Идея состоит в том, чтобы сохранить дух открытого кода и сосредоточиться на рынке более высокого уровня с корпоративной версией, но трудно найти хороший баланс. С точки зрения разработчика, корпоративный открытый код предлагает свободу в сочетании с безопасностью.
3. Отличная архитектура
10 лет назад мы начали с версии eZ, основанной на том, что сейчас называется устаревшим стеком. Хотя кривая обучения вначале была крутой, когда мы получили общую картину, это было похоже на пикап — с ним можно было многое сделать. Это было действительно хорошее программное обеспечение PHP, но немного опередившее время. Такие вещи, как мета-контент-модель, разделение контента и презентации и более 25 точек расширения ядра, были отличными функциями, но, возможно, не очень нужными 10 лет назад. В то время другие CMS просто хранили HTML-файлы и сходили с рук. Сегодня, когда контент должен быть очень гибким и адаптируемым к различным каналам, эти функции необходимы. Требуется еще больше вещей, таких как API, REST, масштабируемость для больших данных и т. Д.
Компания eZ Systems признала это несколько лет назад и решила реорганизовать CMS с нуля, сохранив при этом все хорошее: мета-контентную модель, разделение контента и представления, расширяемость и т. д. Этот процесс все еще остается стабильным и автономным новым стеком. eZ ожидается в следующем году. Новый стек спроектирован с учетом следующих факторов:
-
поддерживать легко расширяемую модель контента для независимого от канала контента
-
предоставлять API на нескольких уровнях для упрощения разработки, интеграции, расширения и обновления
-
«Не изобретай велосипед», используй лучшие в своем классе инструменты
-
сосредоточиться на управлении контентом
-
использовать более новые функции PHP (5.3+) для упрощения кода (например, замыкания и т. д.)
-
сделать тип хранилища сменным настолько, чтобы можно было использовать разные механизмы хранения
-
быть полностью обратно совместимыми при наличии обоих стеков (новых и старых) в распределении, чтобы облегчить переходный период для существующих проектов
Ознакомьтесь с диаграммой гибридной архитектуры eZ Publish 5 (предоставленной компанией eZ Systems) для лучшего понимания текущей ситуации.
4. Имеет перспективную модель контента
Текущая модель контента была введена в 2003 году. Как я уже упоминал, она опередила свое время, но сегодня мы действительно можем использовать ее полный потенциал. Сегодня контент нужно разбить на более мелкие части, чтобы легко управлять им, а также легко интегрировать и распределять по нескольким каналам. С eZ легко изменить тип содержимого по умолчанию или расширить его в соответствии с вашими потребностями. Обычно это всего лишь несколько щелчков мышью в интерфейсе администратора, и эта операция не изменит модель базы данных, что обеспечит простую процедуру обновления.
5. Отделяет контент от презентации
Опять же, это было введено 11 лет назад. Богатый контент не хранится в хранилище как HTML. Он хранится в упрощенной XML-версии. У него есть некоторые стандартные HTML-теги, такие как <b>
или <h1>
но также есть некоторые пользовательские теги, такие как <embed>
для вставки другого содержимого eZ. С одной стороны, это звучит как ограничивающий вариант, но отлично, если у вас есть больше каналов распространения, а не только Интернет. Он также устойчив к изменениям стандарта HTML и т. Д. Презентация была реализована с помощью движка шаблонов eZ (который выглядел очень похожим на Smarty), но в новой версии она визуализируется с помощью Twig (движка шаблонов Symfony) или напрямую из контроллеров в виде JSON или XML. Например, реализация демпинга богатого контента в Markdown должна быть действительно простой.
6. Имеет несколько API
При разработке какой-либо функции или расширения поверх старого стека eZ вы обычно используете более 25 точек расширения и / или вызываете некоторые функции среднего уровня из ядра. Если никакой другой опции не было, вы также можете читать / писать напрямую в базу данных или даже взломать ядро. С новым стеком эта практика сильно изменилась.
-
Прежде всего, существует четко определенный публичный API для управления контентом. Поэтому, если вам нужно получить часть контента, есть только один способ сделать это. Посмотрите некоторые примеры из этого подробного поста в нашем блоге, если вы хотите узнать больше об этом.
-
Существует REST API, который напрямую отображает Public API. Этот идет рука об руку с клиентом REST на PHP и Javascript. Таким образом, интеграция между репозиториями и создание полнофункциональных клиентских веб-приложений должна быть возможной. В настоящее время eZ Systems строит свой новый редакторский интерфейс.
-
И последнее, но не менее важное: существует постоянный API. Уровень хранения в новом ядре реализован с общей частью, а унаследованная часть, специфичная для SQL, отделена. Они общаются через постоянный API. Это было сделано так, чтобы иметь возможность использовать другой механизм хранения, такой как, например, MongoDB. Раньше для этого не было никаких шансов, поскольку код SQL был разбросан по многим уровням кода. Пока еще не разработан механизм хранения NOSQL (на данный момент есть еще несколько важных функций, которые нужно реализовать), но база установлена.
7. Это Symfony
Если устаревший eZ можно назвать неясным и слишком специфичным фрагментом кода, то новый стек будет противоположным. Подход «не изобретай велосипед» действительно сильно ударил в случае создания нового eZ. Они не просто использовали несколько компонентов, они использовали подход полного стека Symfony. Это означает, что все компоненты Symfony находятся там или просто «обновление php composer», и это дает множество вариантов для разработчиков. Более того, это приводит нас к ситуации, в которой присутствовали разработчики Symfony, которые могли бы изучать новый eZ быстрее, чем старые разработчики eZ.
8. Это очень расширяемый
Я уже упоминал, что у унаследованного ядра было более 25 точек расширения. Есть несколько документированных точек расширения также в новом стеке. Например, если вам нужен пользовательский тип поля, есть кулинарная книга о том, как сделать свой собственный .
Но это только верхушка айсберга. Полностью новое ядро построено с использованием сервисного контейнера Symfony и реализовано в виде многочисленных сервисов. Это обеспечивает огромную расширяемость. Если по какой-то причине обычных точек расширения недостаточно, вы можете унаследовать класс от ядра, добавить свой код, при необходимости вызвать родителя и настроить службу так, чтобы система использовала ваш класс. Это было невозможно в унаследованном коде, и, насколько мне известно, не многие другие продукты CMS предоставляют такую гибкость.
9. Известен своей возможностью обновления
Десять лет назад, когда мы начинали наш бизнес по разработке веб-сайтов, сайты, как правило, перестраивали и переопределяли раз в несколько лет. Для больших сайтов это означало боль при переходе на новый код, новую CMS, новый хостинг и т. Д. Через несколько лет старый сайт оказался бы в стадии, когда не было возможности продвинуть его. Взлом и расширение CMS сделали невозможным обновление.
Сегодня веб-жизнь намного быстрее. Изменения функций на сайте нужны практически каждый день. Это означает, что агентства веб-разработки должны быть гибкими и всегда двигаться вперед. Это возможно, если у них есть твердое ядро, которое можно обновить, не нарушая расширения и интеграции, и где eZ действительно сильна. У нас в Netgen есть установки, которые были построены в 2005 году, несколько раз обновлялись за эти годы и в настоящее время работаем с версией с начала 2014 года. Обновления иногда бывают не совсем простыми, между версиями существуют большие разрывы, но обычно это просто вопрос выполнения нескольких скриптов PHP и SQL. Обновление с унаследованного до нового стека (как только не будет унаследованного кода в комплекте), вероятно, будет трудным, поскольку вся архитектура изменяется, но возможно, я не сомневаюсь в этом.
Вывод
Если вы ищете корпоративную систему управления контентом с открытым исходным кодом, построенную на основе лучшей в своем классе среды PHP, расширяемой, обновляемой и простой в интеграции — не ищите больше. EZ это выбор для вас. Начните заниматься этим, и к тому времени, как вы это выясните, появится версия без устаревшего багажа 🙂
Если вы еще не уверены, проверьте недавнее сравнение eZ Publish и Drupal от другого члена сообщества eZ Джо Кепли. Должно быть очень интересное чтение для разработчиков Drupal 🙂
Если вы хотите узнать больше, у вас все еще есть возможность зарегистрироваться на PHP Summer Camp / eZ Publish Summer Camp . Это двойное мероприятие, которое мы организуем в начале сентября в Хорватии.
Или просто попробуйте. Последнюю версию сообщества можно найти здесь, а информацию об установке здесь .
Не стесняйтесь поделиться своим мнением в комментариях.