Архитектура построения систем с использованием QP8.CMS

В помощь архитекторам и системным аналитикам

hero img

Данная статья призвана помочь архитекторам и системным аналитикам в проектировании архитектуры и выборе технологий с использованием QP8.CMS. Отметим, что QP8.CMS является headless CMS, поэтому сайт и административное приложение являются независимыми приложениями, связанными через общую базу данных.

Простой сайт

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

simple site

Такая архитектура имеет следующие плюсы:

  • не требуется бэкенд-разработчик (достаточно фронтенд- или мобильного разработчика);
  • можно управлять данными на витрине без участия разработчика;
  • добавление новых контентов в контракты GraphQL не требует релизного цикла и осуществляется простыми настройками в админке.

Если же на сайте всё-таки требуется собирать какую-либо информацию, то тогда придётся привлечь бэкенд-разработчика. Он может создать отдельный Rest API на любом языке программирования, принятом в вашей в организации.

Сложный сайт

Теперь предположим, что нам требуется создать сайт, содержимым которого нужно управлять: на сайте есть интеграции или авторизация, или же он сохраняет данные пользователей.
Сначала рассмотрим вариант без применения Виджетной платформы. В данном случае можно как использовать GraphQL для чтения данных, так и передавать все данные через Rest API. Система может иметь объединяющий Gateway API, а может и работать напрямую с Rest API и GraphQL API:

complex site

Виджетная платформа

Виджетная платформа – это дополнительные модули и SDK, позволяющие контент-редактору наполнять и развивать сайт с помощью готовых независимых блоков (виджетов). В этом случае контент-редактор создаёт экземпляры страниц из заранее созданных разработчиком шаблонов, определяя структуру сайта.
На страницах, в определенных разработчиком зонах, контент-редактор размещает виджеты. Экземпляры виджетов с различными настройками могут располагаться на разных страницах (например, слайдер или баннер).
Использование виджетной платформы особенно эффективно, если сайт состоит из повторяющихся блоков с различным содержимым. Платформа также позволяет качественно персонализировать страницы под пользователя по различным параметрам: регион, язык, сегмент и т. д.

Вариант с монолитной архитектурой

В этом варианте используется приложение ASP.NET Core MVC. Для доступа к базе данных используются Entity Framework Core классы, которые автоматически генерируются по схеме данных. Для создания страниц и виджетов используется NuGet-пакет .NET Core и шаблоны на Razor. Для организации интерактивных страниц на фронтенде необходимо использовать Vanilla JS или какие-либо библиотеки. При этом не требуется настройка SSR, так как генерация страниц происходит на сервере.

widget monolit

Вариант с разделением на бэкенд и фронтенд

Если требуется разделение на бэкенд и фронтенд или необходимо построить бэкенд на микросервисах, то виджетная платформа предоставляет необходимые для этого средства. При этом получение данных CMS можно организовать как через GraphQL, так и через Rest API. Для сборки страницы на фронтенде разработаны npm-пакеты для Angular и ReactJS. Они берут информацию о странице и виджетах из API виджетной платформы. Необходимо добавить, что в этой конфигурации для правильной работы SEO потребуется настройка SSR.

widget micro