Это старая версия Справка/QS-Концепции/Не-Вики-А-CMF за 2017-11-11 12:05:09..
Не Вики а Content Management Framework
Хотя QS и несет в своей основе Wiki-движок Wacko Wiki, по умолчанию предполагается, что она будет использоваться в другой сфере.
QS по умолчанию – это система для одиночной (администратором) или коллективной (небольшим, закрытым коллективом) работы над данными.
Какие это системы:
- Где администратор ведет базу данных чего-то, и данные могут просматривать незарегистрированные пользователи (типичные новостные сайты, и т.д.)
- Системы архивов (несколько человек ведет архив, документацию, доступные всем)
- Системы дистанционного обучения (есть администратор, есть преподаватели с меньшими правами, и есть с минимальными правами слушатели курсов)
Как реализуется эта концепция?
- После установки системы по умолчанию:
- Регистрация закрыта; войти в систему может только администратор.
- Только администратор может устанавливать сервисы, регистрировать пользователей
- Даже для зарегистрированных пользователей закрыты: правка страниц, закачка файлов, комментарии
- Закачка файлов, комментарии по умолчанию не используются.
- Если нужно дать права на доступ к редактированию, то:
- Администратор регистрирует конкретного пользователя
- Конкретно выдает ему права на правку той или иной страницы (или включает его в группу Writers, которой доступна правка страниц)
- Основным инструментом является написание экшнов для вывода данных – т.е. разработчик пишет любой текст на странице (что упрощает администрирование текстовых элементов) + добавляет на эту страницу экшн, который отвечает за ввод/вывод динамической информации из базы данных.
- Для работы с данными администратор ставит расширения AdvOntology и моделирует нужную структуру базы данных, автоматически получая инструменты для её редактирования. Далее он может создать небольшие экшны для вывода этой информации в нужном ему виде в публичный доступ.
Т.е. в каком-то смысле после установки QS администратор дешево и быстро получает заготовку, в которой уже есть: страницы с вики-форматированием, регистрация пользователей, установки прав, удобные инструменты для БД (AdvOntology, AdvTableViewer). Либо ему этого хватает, либо он что-то пытается дописать сам.
Сравнения с CMS и фреймворками
Давайте сравним концепцию QS с типичными CMS и фреймворками.
Если сравнивать с CMS (Drupal, Wordpress, Joomla и пр.)
- + QS значительно более компактен:
- + поэтому он прост – существуют только страницы и пользователи
- + поэтому он быстр
- + поэтому расширения для него легче писать и отлаживать (в традиционных CMS очень сложно понять, что с чем конфликтует)
- + QS ориентирован на то, что страницы содержат и текст, и динамический код. В традиционных CMS любой динамический код должен быть сильно конфигурируем, чтобы иметь возможность вывести предупреждение, доп. информацию и т.д. Здесь это не требуется – всё собирается из небольших кусочков.
- – QS содержит мало расширений и возможностей по умолчанию. Для хорошей сборки сайта необходим разработчик.
- – QS ориентирован на администрирование сайта специалистом (хотя это может быть перенастроено)
Если сравнивать с фреймворками (Yui, Zend и пр.)
- + QS представляет собой УЖЕ готовый сайт, который можно развивать с помощью определенной функциональности. Т.е. не надо каждый раз писать одни и те же страницы регистрации, управления правами, администрирования БД, установки сервисов.
- + QS определяет четкую структуру БД и сайта – например, всё в целом является страницами. Это означает, что:
- расширения в целом будут совместимы друг с другом
- приходящий разработчик сможет разобраться в том, как что с чем взаимодействует. Каждая инсталляция похожа на другую, не использует оригинальных решений
- + QS компактен. Ядро занимает несколько файлов (в отличие от сотен в Zend, который многоцелевой), и он работает очень быстро.
- – QS по умолчанию имеет мало функций по сравнению с фреймворками
- – QS не позволяет писать роутинги (определение того, как что будет показываться по определенным адресам) вручную – т.е. заставляет следовать своей модели
- – QS не позволяет гибко реагировать на ошибки (хотя потенциально это можно сделать)