Важна идея
Marat Suponitsky 07.06.2007 00:32
/ 07.06.2007 00:45
MVC -- это великолепная архитектура, и я ее с удовольствием использую. Система, которая разрабатывается, выглядит следующим образом:
1) Структура. Редактируется через вебнутый интерфейс. Данные о разделах и файлах хранятся в базе, а физически они находятся на диске в каталоге, который имеет структуру, идентичную приложению.
2) Контролер. Обрабатывает запросы пользователя и вызывает модель, передавая ей необходимые параметры.
3) Модель. Формирует XML-обертку в зависимости от переданных параметров.
4) Представление. XSLT, который преобразует полученный от модели XML необходимым образом.
Все служебные методы системы живут в классе Engine, а методы, отвечающие за формирование страниц -- в Main.
Пример работы логики:
1) Сервер получает запрос /news/, перенаправляет его на /structure/news/ в котором лежит index.html, вызывающий контролер и auto.p с набором методов, отвечающих за формирование именно этой страницы. Если файла нет -- 404, если есть -- ряд проверок контролером, например на опубликованность, публичность и т.п. Эти данные тянутся из базы. В случае, когда все в порядке, контролер проверяет, был ли указан метод в $form:action, который необходимо вызвать или использовать дефолтный @index[]. Вызываемый метод передается в модель ^self.model[^MAIN:methodName[]].
2) Модель формирует оберточный XML, в который входит различная служебная информация. Внутрь обертки помещается XML, сформированный ^MAIN:methodName[]. Далее инициализируется XSL-шаблон -- если запрос выполнен с помощью XMLHttpRequest, используем специальный ajax.xsl, иначе default.xsl. Ну и полученный в результате трансформации xhtml возвращается клиенту.
Можно долго спорить о реализации, ведь можно было объединить служебные методы и методы приложения, можно было врубить мега абстракцию и побить все на классы и модули и т.п. и т.д. Но хочется именно фрэймворк. Фрэймворк, позволяющий быстро создавать структуру, управлять доступом, создавать интерфейсы. Фрэймворк, который будет служить макетом всех будущих приложений. Фрэймворк, с которым будет просто
удобно работать. Именно для удобства задумывался каталог, повторяющий структуру приложения, чтобы можно было быстро найти необходимые кирпичики проекта.
Вот такие возникли мысли, что скажете?