Разрабатываем архитектуру CMS

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

Скрытые Затраты

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

Думайте о добавлении блога или форума к вебсайту, которым управляют СМ. Есть модули или плагины для этого, но они никогда не обеспечивают ту же самую гибкость как равнина blogging двигатели, такие как Wordpress, или простые двигатели форума как phpBB. Так, даже если основное требование выполнено модулем, Вы будете всегда нуждаться - всегда - чтобы приспособить его кодекс.

И это - то, где это становится уродливым. Кодовая основа открытых исходных двигателей СМ и их плагина нигде не столь же хороша как, что Вы можете видеть в структурах РАДИУСА в эти дни. Большинство из них основано на очень старой архитектуре (PHP4, никакая ориентация объекта, никакая надлежащая обработка ошибок, прямой доступ к базе данных, и т.д.). Это означает, что изменение кое-чего будет очень болезненным, и очень дорогим. Вы столкнетесь с многочисленными ошибками, измените blogging плагин три раза, потому что ни один из тех, которые Вы проверили, не способен к выполнению, в чем Вы нуждаетесь, Вы модернизируете свои СМ к последней версии, чтобы извлечь выгоду из этого единственного затруднительного положения ошибки, которое должно спасти Вашу жизнь, но тогда Вы должны изменить всю свою существующую конфигурацию …

Это столь же плохо, как это звучит. Начните изменяться, одна единственная линия кодекса в заявлении строят сверху Drupal или ezPublish, чтобы назвать только два главных, и Вы в беде. Момент Вы нуждаетесь кое в чем, что прирожденно не поддержано, Вы входите в Темную Зону ада СМ. Вы собираетесь потратить много денег на развитии. Вы никогда не будете видеть конец туннеля. Таким образом, пока кто-то не говорит, несколько лет с этого времени, “мы нуждаемся во всем том дерьме? Давайте построим кое-что, что соответствует нашим потребностям и который фактически работает”.

Создание Ваших Собственных СМ

Данное число доступных решений для СМ открытого источника, строя каждый самостоятельно походит на глупую идею. Но если Ваш вебсайт - 50%-ое управление контентом и 50 % что - то еще, Вы вероятно должны начать со структуры веб-приложения как symfony или Django, а не СМ. Эти структуры обеспечивают плагины, которые уже вносят свои вклад из работы Управления контентом, таким образом создавая СМ сегодня походит на сборку кирпичи Lego, чтобы построить кое-что, что точно соответствует Вашим потребностям.

Возьмите symfony, например. Это оказывает родную поддержку, или поддержку через плагины, для:

* Симпатичные URL

* Произведенные формы и правительство

* Кэширование

* Сложные шаблоны

* Многократная окружающая среда

* Секции организованы в структуре дерева

* Пользовательское установление подлинности, группы и разрешения

* Поиск и индексация

* Изображение и другое управление активами

* Довольные признаки и облака признака

* Пользователь комментирует

* Замедление для пользовательских вкладов

* Довольная история и versionning

* Корм RSS

* Управление задачами и очереди работы

* Статистика использования

* Форум

* Блог

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

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

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

Таким образом, если Вы проектируете свои таможенные СМ тщательно, и с будущим в памяти.

Окружающая среда

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

Но что случается, когда новая особенность не сделана из кодекса, но из данных? В ezPublish, например, чтобы определить новый тип содержания (они называют это "Классом"), Вы должны использовать интерфейс сети конца и заполниться в нескольких формах. Свойства нового типа содержания сохранены в базе данных. Чтобы развернуть этот новый тип содержания от окружающей среды тестирования до окружающей среды производства, разработчики должны передать данные от одной базы данных до другого - не вытирая несвязанную информацию относительно базы данных производства, такой как пользовательские комментарии, статистика, и т.д.

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

Данные, или Кодекс?

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

Стандартные двигатели СМ будут почти всегда отвечать 'на Данные'. Мое личное мнение - то, что это неправильно во многих случаях. Довольные типы - только один пример, но думают о технологических процессах или расположениях страницы например. Они определяют сложную логику, которая всегда переводит, чтобы закодировать, и предоставление пользователю, способность изменить их через внутренний интерфейс означает хранить кодекс в базе данных и оценивать его во времени выполнения. Тогда Вы не можете использовать op-кодовые двигатели тайника как APC incriease Ваша работа вебсайта. И развертывание этого к производству является кошмаром.

Некоторые компании думают, что большинство особенностей СМ должно быть доступным через внутренний интерфейс, чтобы быть в состоянии увеличить заявление без дополнительных событий. Но это - иллюзия. Для одного конфигурация довольных классов в ezPublish настолько сложна, что это действительно требует разработчика PHP, и дорогого, так как опыт с ezPublish - один из наиболее потребованных навыков на рынке ЭТОГО (по крайней мере во Франции). Больше особенностей означает больше развития, и нет никаких СМ там, который заменяет власть языка программирования с интерфейсом сети.

Так, чтобы привел к одному хорошему эмпирическому правилу: Проектируйте свои особенности так, чтобы они могли быть сделаны из кодекса, а не данных. Это относится к элементам, которые могут быть изменены графическим пользовательским интерфейсом, или programatically:

* Довольные классы

* "Виджеты" или "Компоненты" для страниц

* Расположения страницы или "шаблоны"

* Довольный технологический процесс ратификации

* Задачи

Фундаментальные вопросы

Сложность двигателя СМ зависит очень от ответа, который Вы даете нескольким фундаментальным вопросам:

* Содержание может существовать независимо от страницы?

* Содержание может существовать в больше чем одном месте в вебсайте?

* Несколько представлений для единственной части содержания?

* У содержания могут быть различные версии одновременно?

* Содержание может быть изменено в конце и держать неизменным в frontend?

* Пользователи могут составить страницу с "виджетами" или "компонентами" в режим полного соответствия интерфейс?

* Могут предопределенные зоны в шаблоне содержать больше чем один "виджет" или "компонент"?

* У страниц секции могут быть различные шаблоны?

* У страниц секции могут быть различные версии одновременно?

* Могут пользователи программировать публикацию страницы секции, или содержания, заранее?

* СМ могут помнить предыдущие URL для содержания, которое изменило название?

Если ответ на первый вопрос не, то понятие "страницы" и "содержания" совпадает. Вы вероятно не должны развивать что-нибудь, так как Ваши СМ будут весьма просты.

Если Вы отвечаете на да на все эти вопросы, то СМ могли бы взять в три раза дольше, чтобы развиться чем, чем это будет иначе.

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

Самонастройка отражения

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

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

Вопрос: Вы храните данные для всех этих довольных типов в единственном столе, или Вы составляете таблицу для каждого довольного типа? Наиболее "нормализованный" выбор должен вероятно создать одну структуру данных для каждого. У Вас могли быть стол "статьи", стол "рецепта", и даже стол "викторины" с внешними ключами к “quiz_question” и “quiz_result” стол. Это позволило бы Вам делать вопросы на некоторых определенных признаках определенного довольного типа. Вы могли построить таможенную поисковую машину для своих рецептов и искать компоненты, иностранную кухню и время для подготовки.

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

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

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

Стимулирующее Осуществление

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

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

Это будет очень удовлетворяющим опытом, и клиент поблагодарит Вас позже за побеждение его на правильном пути. И это даст Вам много, чтобы говорить о для следующих СМ, которые Вы строите …

Возможно связанные должности (автоматически произведенный):

* PicLens Malware?

* Просмотр Ваших активов со стилем

* Маленький symfony для быстрого ответа

* Проанализируйте свои данные