Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Принципы создания движка сайта (CMS) // Опять концепция ОСС (продолжение) // выпуск 7


Изюминка двигателя сайтов
Рассылка Хусамова Сухроба
Выпуск 7. Опять концепция ОСС
29 апреля 2006 г.

Опять концепция ОСС (продолжение) // выпуск 7

Что в выпуске? Структура и сценарий работы каждого базового компонента и приложения отдельно. В конце выпуска дана презентация нового курса рассылки.

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

Диспетчер компонент

Как уже писал в предыдущих выпусках, один из компонент должен быть ключевым. Его я назвал диспетчером (или менеджером) компонент. Главные функции: регистрация/установка/удаление компонент, первичная обработка запроса (выбор одного из компонент для запуска в зависимости от запроса), пост-обработка выходных XML-данных, обработка исключительных ситуаций (которые не были обработаны в вызываемых компонентах).

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

Диспетчер приложений

Главные функции: регистрация/установка/удаление приложений, вызов приложений по их ID-номеру, реализация базовых классов и интерфейсов приложений.

Учетные записи

Этот компонент состоит из трех взаимосвязанных частей: учетные записи, расширения учетных записей и права доступа. Компонент ведет базу учетных записей пользователей, реализуя следующие основные функции: регистрация/активизация/удаление учетных записей, сопоставление учетной записи спискам прав доступа и спискам расширений (иными словами, по ID учетной записи выдает список прав для этой учетной записи и список всех расширений).

Компонент расширений учетных записей занимается созданием новых полей учетной записи, группируя их по каким-либо признакам. Например, приложение Библиотека добавит расширение Читатель с новыми полями: список взятых книг и т.д.

Компонент прав доступа занимается лишь ведением списка прав для данной учетной записи. Ограничением доступа занимается уже приложение, которое создает новые виды прав.

Компонент трансформации XML-потока в HTML-страницу

Этот компонент не так прост, как кажется. Предполагается, что в XML-потоке будут содержаться элементы, которые трансформируются в визуальные HTML-элементы (с разными добавлениями, например, java-скриптами проверки данных и т.п.). Также предполагается, что имеется список стандартных элементов (текст, параграф, картинка, поле ввода, форма, кнопка и пр.). Они обрабатываются стандартными XSL-шаблонами, которые в совокупностями образуют тему. Темы можно менять, меняя дизайн сразу всех стандартных элементов. Но, будут ситуации, когда какому-либо приложению потребуется ввод нового, нестандартного элемента. В этом случае к текущей теме будет подключаться XSL-шаблон на этот нестандатный элемент. Вот подключением таких добавочных XSL-шаблонов и будет заниматься вышеобозначенный компонент.

Итак, главными функциями компонента трансформации выходного XML-потока будут: работа с темами, подключение XSL-шаблонов нестандартных элементов, работа с шаблонами разделов (если не забыли, это те XSL-шаблоны, в которых размечены области вывода). Под работой над шаблонами я понимаю установку и удаление, к примеру, а также подключение для обработки XML-данных.

Подключения к базам данных

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

Журнал событий

Этот компонент регистрирует в своей таблице все события. По-умолчанию, ведутся три журнала (возможно их удалить нельзя): журнал приложений, журнал безопасности и журнал системы.

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

Журнал безопасности содержит записи о таких событиях, как успешные и безуспешные попытки доступа в систему, а также о событиях, относящихся к использованию ресурсов, например о создании, открытии и удалении файлов и других объектов.

В журнале системы содержатся события системных компонентов Sultana. Например, в журнале системы регистрируются сбои при загрузке приложения или других системных компонентов при запуске системы.

События подразделяются на несколько типов: уведомление, предупреждение, ошибка, фатальная ошибка, аудит успеха, аудит отказа.

Уведомление это событие, описывающее удачное завершение действия приложением или службой. Например, после успешной загрузки службы в журнал заносится событие уведомления.

Предупреждения это события, которые в момент записи в журнал не были существенными, но могут привести
к сложностям в будущем. Например, если на диске осталось мало свободного места,
в журнал заносится предупреждение.

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

При фатальной ошибке невозможен вывод ответа на запрос. Например, если сбой при загрузке главного приложения раздела.

Аудит успеха это событие, соответствующее успешно завершенному действию, связанному с поддержкой безопасности системы. Например, в случае успешного входа пользователя в систему,  в журнал заносится событие с типом «Аудит успехов».

Аудит отказа это событие, соответствующее неудачно завершенному действию, связанному с поддержкой безопасности системы. Например, в случае неудачной попытки доступа пользователя к разделу сайта в журнал заносится событие типа «Аудит отказов».

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

Почтовая служба

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

Задания по-расписанию

Пока не уверен, что это является базовым компонентом. Главную функцию думаю все знают. Естественно, что задания должны устанавливаться как вручную, так и через API приложениями и компонентами системы в автоматическом режиме.

В общем это пока все из базовых компонент. Теперь перейдем к краткому списку и описанию базовых приложений.

Конвертер Microsoft Word ML

Я уже давно использую такую конвертацию. То есть, пользователь вместо создания документа в HTML-редакторе, написанном на java-скриптах, создает статьи в Word-е, даже с картинками и загружает на сайт. В свойствах документа можно указывать код раздела, куда статью следует разместить. А конвертер преобразует в нужный мне XML-формат. Не знаю как кому, но мне такой способ кажется более удобным.

Контрольная панель

Это приложение аналог Проводника в ОС Windows. Главные функции: регистрация приложений (создание меню для доступа к управлению регистрируемым приложением), управление основными функциям (базовыми компонентами ядра).

Центр справки и поддержки

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

Шаблоны данных

Аналог организации шаблонов данных как у системы NetCat. Разве что я добавлю несколько улучшений.

Шрифты

У меня уже много идей по использованию PDF-документов на сайте. А для создания таких документов понадобиться библиотека шрифтов. Так что такой компонент должен быть. Функции думаю понятны.

Языки

Главные функции: возможность создания языковых словарей для установленных компонент и приложений. Думаю понятно зачем это нужно.

Публикации

Простейшее приложение, организующее публикацию статей. Использует WordML-конвертер или HTML-редактор по выбору.

А теперь презентация:

Новый курс рассылки

Я придумал как буду продолжать повествование о своем двигателе. Расскажу как это будет выглядеть. Я обещал создать следующий прототип на PHP5. Вот и буду его создавать прямо в рассылке. То есть, опишу ход мыслей, план проекта, нарисую плакаты, листинги файлов. Вам даже скачивать его не нужно будет. По ходу повествования весь прототип будет собран у вас на компьютерах. Заодно и PHP5-му обучитесь. А Парсеристы увидят чем отличается PHP5 от Parser3. Хмм... и я в том числе:)

Что я добьюсь этим? Вы лучше будете разбираться в коде и концепции моего предложения по двигателю. И вам будет проще потом присоединиться к совместной разработке. А мне будет проще понять как вести групповую разработку программы. К сожалению, я пока детально не вижу как руководить проектом. В общих чертах пока все ясно, но для меня важно видеть детали ключевых моментов. По ходу описания создания прототипа я хочу понять как разбить задачу для нескольких разработчиков.

Если у вас будут интересные дополнения или замечания по новому курсу - буду рад выслушать! Особенно конструктивные. Продолжение в выпуске 7.1.

В следующем выпуске: начало проектирования прототипа ОСС на языке PHP5.

Всего доброго!
С вами был Хусамов Сухроб из Санкт-Петербурга.

Адрес для личных сообщений: khusamov@mail.ru или khusamov@yandex.ru
Подписка на дискуссионный лист: inet.webbuild.khusamov.discussion-list@subscribe.ru


В избранное