Как вы CM приложение с управляемым содержимым

У нас есть веб-приложение, которое содержит кучу контента, который может изменить системный оператор (например, новости и события). Время от времени мы публикуем новые версии программного обеспечения. Программное обеспечение помечается и хранится в subversion. Тем не менее, я немного не понимаю, как лучше управлять версиями контента, который может быть изменен независимо. Какие механизмы используют люди, чтобы убедиться, что контент хранится и имеет версию таким образом, чтобы сайт можно было воссоздать или, по крайней мере, контролировать версию?


person Rich    schedule 13.01.2009    source источник


Ответы (3)


Когда вы идентифицируете два набора файлов, которые имеют свой собственный жизненный цикл (программные файлы с одной стороны, «новости и события» с другой), вы знаете, что:

  • вы не можете версионировать их вместе одновременно
  • не стоит ставить один и тот же ярлык

Вам нужно сохранить файлы «новостей и событий» отдельно (либо в VCS, либо в БД, как предлагает Ян Джейкобс, либо в CMS — системе управления контентом) и найти способ связать их вместе (идентификатор, временная метка, мета-метка, ...)

Не забывайте, что вы говорите не только о двух разных наборах файлов с точки зрения жизненного цикла, но и о разных наборах файлов с точки зрения самой их природы:

Рассмотрим терминологию, введенную в этом вопросе SO "Является ли управление активами расширенным набором контроля версий" от С.Лотт

  • файлы программного обеспечения: информация об инфраструктуре, то есть «представляющая обработку корпоративного информационного актива». Ваш код является частью этого актива и управляется VCS (системой контроля версий) в рамках дисциплины управления конфигурацией.
  • «новости и события»: информация о предприятии, то есть данные (необрабатываемые); это часто делится между менеджерами контента и реляционными базами данных.

Так что не все должно заканчиваться в Subversion.

person VonC    schedule 14.01.2009

Храните все в БД и давайте каждой транзакции в БД временную метку. таким образом, вы можете хранить стандартные резервные копии БД и загружать содержимое сайта в любую дату, если произойдет худшее.

person Ian Jacobs    schedule 13.01.2009

Я полагаю, что часть ответа зависит от того, какую CMS вы используете и как разработано ваше веб-приложение, но в целом я бы рассматривал такие данные, как новости или события, как «контент». Другими словами, это не часть вашего приложения — это данные, которые ваше приложение обрабатывает.

Конечно, между вашим кодом CMS и вашим кодом приложения будут проблемы с версиями. Вы можете управлять этим, определив интерфейс между ними. Лично я бы опубликовал данные в веб-приложении в виде XML, что дает вам возможность использовать XML-схему, чтобы точно определить, что CMS должна создавать и что веб-приложение должно обрабатывать.

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

Это непросто, и это снова усложняется, если вам нужны дополнительные поля данных в вашей CMS. Ожидайте планирования довольно сложного процесса выпуска (также в зависимости от того, насколько сложен ваш сценарий Dev-Test-Acceptance-Production).

Если вы не используете CMS, вам следует подумать об этом. (Конечно, если операция очень маленькая, она все же может попасть в категорию, когда допустимо выполнение ее вручную.) Простой ввод необработанных данных в систему управления версиями не решает проблему — вам нужно иметь возможность контролировать формат, в котором ваши данные публикуются в веб-приложении. Почти наверняка этот формат должен быть предназначен для использования программным обеспечением и, следовательно, обычно не подходит для ручного редактирования теми людьми, которые пишут новости или события.

person Dominic Cronin    schedule 18.01.2009