Уровень контента

Структура платформы

База данных

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

Разделение таблиц с данными

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

Хранение различных типов записей в общей таблице

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

Хранение в базе только контентной информации

Важным аспектом использования базы данных в платформе Site Sapiens является хранение в ней только контентной информации. Все служебные данные: шаблоны, программный код и параметры – хранятся на файловой системе. Таким образом,  операции с контентом (восстановление резервной копии, импорт данных, очистка контента) не влияют на программную часть проекта. И наоборот: изменения в логике работы сайта, в его параметрах или внешнем виде не сказываются на контенте и не требуют прекращения работы по администрированию ресурса.

Файловая система

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

Защита ядра

При том, что большая часть программного кода Site Sapiens поставляется в открытом виде, ядро платформы защищено. Криптографическая защита ядра преследует две цели. С одной стороны, защита предотвращает несанкционированные изменения ядра, следствием которых может стать выход из строя всего проекта, разработанного на платформе Site Sapiens. С другой стороны, в ходе шифрации происходит компиляция кода. Это дополнительно повышает быстродействие платформы.

Интеграция с внешними информационными системами

Контент не обязательно располагается в системе Site Sapiens. Для интранет-решений характерна ситуация, когда информация хранится во внешних информационных системах. В таких случаях Site Sapiens обеспечивает дополнительный способ доступа к этой информации. Используя протокол SOAP с учетом прав доступа пользователя и, что самое важное, в режиме он-лайн, информация из различных источников собирается в рамках одного портала.

Уровень сервера

Ядро

Основой всей платформы является его ядро. Задача ядра Site Sapiens проста и понятна: по запросу извне как можно быстрее сформировать ответ и отдать тому, кто сделал запрос. В случае веб-ресурса извне поступают запросы пользователей на отдельные страницы сайта. Для формирования ответа ядро определяет запрашиваемую страницу в структуре ресурса, находит соответствующий шаблон, получает данные из базы, производит необходимые логические вычисления и возвращает страницу браузеру пользователя. Самая сильная стороны ядра Site Sapiens, помимо его скорости работы, – его универсальность. В общем случае для ядра нет разницы: запрашивают у него веб-страницу, или wap-страницу, или данные в формате XML, или версию для печати. Задача ядра от формы запроса не меняется. Следствием такой универсальности является возможность применения ядра для самого широкого круга задач. Это и построение веб-сайтов, и создание интранет или экстранет решений, и разработка интеграционных серверов, и многое другое. Достаточно, чтобы были шаблон, данные и логика их объединения.

Статические, динамические и вводимые пользователем данные

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

Интерфейс программирования приложений (API)

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

Расширения ядра

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

Внешние подсистемы

Часть задач целесообразно выделить из платформы управления контентом масштаба предприятия в отдельные подсистемы.

Баннерная подсистема

Специально для Site Sapiens 3.0 была разработана внешняя баннерная система. Внешняя баннерная система позволяет снизить нагрузку на ядро и ускорить получение пользователем информации. Баннеры при такой архитектуре подгружаются уже после формирования самой страницы. Сверхбыстрая подсистема определяет, какой баннер в какое место должен быть загружен. При этом учитывается привязка баннеров к площадкам, к URL адресам, приоритеты показа. Баннерная подсистема может не допускать слишком частый показ отдельных баннеров. В фоновом режиме фиксируется статистика показов и переходов, для последующей выгрузки и анализа. При этом интерфейс управления баннерной системой является частью интерфейса Site Sapiens 3.0.

Поисковая подсистема

Для повышения эффективности поиска в Site Sapiens 3.0 эти функции переданы внешней подсистеме поиска. В ее задачи входит построение поискового индекса по всем страницам ресурса. Индексируется не только содержание страниц, но и содержание прикрепленных файлов формата .doc, .xls, .ppt, .pdf, .txt. Таким образом, поиск по сайту выполняется максимально быстро и в максимально полном объеме.

Уровень клиента

Проект в режиме доставки

99% времени проект находится в режиме доставки. Это всего лишь означает, что его просматривают обычные посетители. Однако даже в режиме доставки платформа обеспечивает проверку прав доступа и корректно отображает только информацию, доступную текущему пользователю.

Проект в режиме административного интерфейса

Весь административный интерфейс Site Sapiens 3.0 формируется тем же ядром, которое обеспечивает доставку информации посетителям. Это означает, что изменение административного интерфейса не сложнее изменения дизайна проекта. Таким образом, визуальное оформление административного интерфейса системы может быть изменено для конкретного проекта.

Работа интерфейса

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