Проектирование веб-приложений с применением Data Management System (на основе технологии скаффолдинга)

в 18:25, , рубрики: scaffolding, Анализ и проектирование систем, Веб-разработка, проектирование, Проектирование и рефакторинг, метки: , ,

Проектирование веб приложений с применением Data Management System (на основе технологии скаффолдинга)

В предыдущей статье я рассказал о том, почему считаю неэффективной разработку с применением Content Management System. В этой статье, я расскажу о том, какой подход использую в построении веб-приложений.

Альтернативы CMS

В комментариях к предыдущей статье были предложения вместо Content Management System применять Content Management Framework. Это действительно позволяет гораздо гибче проектировать архитектуру веб-приложения, но более затратно по ресурсам.
Я предлагаю альтернативу в виде Data Management System.
Прежде чем продолжить, следует разделить понятия Content Management System, Content Management Framework и Data Management System.
В статье под Content Management System я понимаю систему, которая имеет свою заданную структуру базы данных и набор объектов предметной области.
Под Content Management Framework я понимаю некий набор классов и методов, который помогает автоматизировать работу с данными на уровне программного кода.
Под Data Management System я понимаю автономное веб-приложение, которое предоставляет возможности по управлению данными. При этом

Особенность подхода при разработке с применением системы управления данными

При разработке с использованием системы управления данными идет архитектурное разделение проекта на несколько независимых частей база данных, frontend и backend.

  • Frontend – часть веб приложения которая в большинстве случаев включает в себя большое количество экранов с разнообразным дизайном и пользовательским интерфейсом)
  • Backend – часть проекта которая в данном случае не требует отдельной разработки и как раз и является системой управления данными.
  • База данных – выделена отдельно, поскольку в отличие от подхода с использованием CMS содержит чистую структуру, отражающую предметную область. Таким образом, нет необходимости хранить в базе инородные таблицы, как это обычно бывает при использовании WordPress, Joomla и других CMS.

Следует также заметить, что нам нет необходимости для каждого проекта создавать пользовательский интерфейс, а так же реализовать CRUD-логику (create retrieve update delete — Создание чтение обновление удаление), поскольку этот функционал обеспечивается самой системой управления данными.

Ключевым функционалом, на котором основывается работа Data Management System, является скаффолдинг. Скаффолдинг – это технология поддерживаемая некоторыми MVC фреймворками, которая позволяет используя дополнительное описание (например атрибуты классов) схемы данных строить приложение которое поддерживает CRUD -функционал взаимодействия с базой данных. Одним из проектов, который активно применяет эту технологию является Ruby on Rails. Так же к системам, применяющим скаффолдинг следует отнести ASP.NET Dynamic Data (.NET) и Django (Python).
Итак, в общем случае система управления данными базируется на:

  • Scaffolding System Core – система скаффолдинга, которая позволяет динамически строить пользовательский интерфейс на основе классов предметно области.
  • Data UI Controls – наборе контролов пользовательского интерфейса которые применяются используются системой скаффолдинга
  • Data Description Specification – набор правил по которым классы предметной области дополняются атрибутами помогающими системе скаффолдинга более точно строить пользовательский интерфейс.

Проектирование веб приложений с применением Data Management System (на основе технологии скаффолдинга)

Построение веб-приложения с применением DMS

Процесс проектирования с применением DMS можно описать следующим образом:

  1. Проектирование базы данных
  2. Создание классов предметной области с применением ORM (Hibernate, EntityFramework, другая система объектно-реляционного отображения).
  3. Дополнение классов предметной области атрибутами позволяющими точнее строить пользовательский интерфейс. (Например текстовое поле в базе данных может быть отображено в пользовательском интерфейсе как: обычное текстовое поле, многострочное текстовое поле, WYSIWYG-редактор).
  4. Разработка Frontend части (собственно веб приложение)
  5. Разработка Backend, которая сводится к конфигурации и при необходимости кастомизация Data Management System (в большинстве случаев для реализации CRUD модели доработка не требуется).

Ниже представлена схема взаимодействия различных компонентов проекта.

Проектирование веб приложений с применением Data Management System (на основе технологии скаффолдинга)

Ограничения при применении Data Management System

В случае применения системы управления данными есть и свои ограничения

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

  • Необходимость добавления атрибутов к классам предметной области для более корректного построения пользовательского интерфейса.

Преимущества применения DMS

При использовании системы управления данными мы получаем следующие преимущества:

  • полное разделения Frontend и Backend частей проекта
  • создание и поддержка «чистой» структуры базы данных
  • быстрое получение CRUD функционала управления данными

Практическое применение

В своей практике я использую систему управления данными построенную на основе таких компонент как:

  • ASP.NET Dynamic Data
  • Расширенного набора контролов пользовательского интерфейса
  • Спецификации атрибутов применяемых при описании классов предметной области
  • Набора атрибутов, базовых классов и интерфейсов для расширения классов предметной области.

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

Выводы

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

Ссылки

Эти ссылки будут полезны скорее начинающим разработчикам, чем тем кто уже имеет опыт в построении веб-приложений:

Что такое скаффолдинг (англ.)
Django
ASP.NET Dynamic Data
ASP. NET Dynamic Data — пример использования

Автор: Ernado


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js