Pull to refresh

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

Reading time 4 min
Views 7.8K


В предыдущей статье я рассказал о том, почему считаю неэффективной разработку с применением 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 – набор правил по которым классы предметной области дополняются атрибутами, помогающими системе скаффолдинга более точно строить пользовательский интерфейс.




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


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

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



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


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

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


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


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


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


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

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

Выводы


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

Ссылки


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

Что такое скаффолдинг (англ.)
Django
ASP.NET Dynamic Data
ASP. NET Dynamic Data — пример использования
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+9
Comments 15
Comments Comments 15

Articles