Мое мнение
beerman 07.09.2003 13:25
Вот мое IMHO по поводу архитектуры системы.
Предлагаю использовать архитектуру, которую я использовал уже на двух сайтах. Есть библиотека классов, общая для нескольких сайтов. Классы отвечают за функционирование отдельных разделов сайта (форум, публикация новостей/статей, опросы и т.д.). В моем случае классы имеют общего предка (db), чтобы не переписывать один и тот же код в каждом классе.
Например: класс news управляет новостями на сайте. Его методы (без списка параметров): add, delete, edit, getById, list. Методы getById и list возвращают узлы XML, соответственно для единичной новости и для списка новостей. Код веб-страниц со списками или текстами новостей содержит только вызовы этих методов, при выполнении этого кода формируется документ XML, содержащий весь контент страницы. Далее, в методе postprocess этот XML-документ трансформируется с помощью XSL в веб-страницу, которую получает посетитель сайта. (надеюсь, все понятно объяснил;)
По этой схеме работают оба моих сайта и их CMS`ы. Все страницы получаются из XML при помощи XSL.
Достоинства такой архитектуры очевидны, большая часть кода реюзается в нескольких сайтах. Незначительно различается только код самих страниц, и используются разные шаблоны XSL для каждого сайта. Легко сделать версии страниц для печати. Легко вставить в страницу любую инфу.
Типы файлов при использовании такой архитектуры:
.p – классы и файлы auto.p,
.html – страницы сайтов и их cms (в них формируется контент страниц в XML )
.xsl – шаблоны оформления.
Я предлагаю не хранить структуру сайта в БД, и вообще ее нигде не хранить. Структура, мне кажется, это только для людей, так сказать чисто оформительский уровень. Программно все должно состоять, как уже и говорил sly, из автономных модулей, с этим, думаю, согласятся все. Поставил, скажем, каталог продукции на сайт, слегка изменил шаблоны и код страниц, где должна быть инфа из этого каталога, и все заработало. Такой способ работает, проверено.
На уровне файлов сайт состоит только из каталогов, содержащих его разделы. Примерно вот так:
|-auto.p – корневой auto.p
|-/i/ – общие изображения
|-/news/ - файлы .html и .xsl для раздела новостей
|-/forum/ - файлы .html и .xsl для форума
|-/services/ - файлы .html и .xsl для раздела с инфой об услугах
…
|-/admin/ - раздел администрирования (CMS)
Файлы общих и специфичных для этого сайта классов лежат за пределами каталога с сайтом.
Теперь про CMS
Я думаю, что нужно писать CMS для управления контентом сайта, но не его структурой или оформлением. Предназначена она должна быть в основном не для разработчиков, а для людей, которые занимаются поддержкой сайта, публикацией всякой инфы, опросов, модерирования форума и т.д. Эти люди и так не смогут создать дополнительные раздел или сервис на сайте или изменить оформление, так что подобные функции будут лишними. Все это могут сделать руками квалифицированные разработчики.
Что касается платформы для CMS, то предлагаю юзать PgSQL. MySQL слишком убог для нормальной разработки, постоянно приходится перекладывать на плечи скриптов работу, которая должна выполняться СУБД. Это касается поддержки ссылочной целостности, юнионов и т.д. К тому же в MySQL нет хранимых процедур и триггеров, а это весьма полезные штуки.
Кстати, а где мы будем тестировать наши разработки?
Я оставил это сообщение в форуме
http://parser.proc.ru/forum/. Предлагаю продолжать все дальнейшее обсуждение там.