In previous article I talked about why I think it’s inefficient to develop using Content Management System. In this article, I’m going to talk about the approach I use to build web applications.
In the comments to the previous article, there were suggestions to use the Content Management Framework instead of the Content Management System. This does allow for much more flexibility in designing your web application architecture, but is more resource intensive.
I suggest an alternative in the form of Data Management System.
Before we continue, we should distinguish between Content Management System, Content Management Framework, and Data Management System.
In this article, by Content Management System I mean a system which has its own defined database structure and set of subject matter objects.
By Content Management Framework I mean some set of classes and methods that help automate data handling at the program code level.
By Data Management System I mean a standalone web application that provides data management capabilities. In this
Specifics of the data management system approach to development
When developing with a data management system, there is an architectural division of the project into several independent parts: database, frontend and backend.
- Frontend – part of a web application which in most cases includes a large number of screens with a variety of designs and user interfaces)
- Backend – part of the project, which in this case doesn’t require a separate development and is just the data management system.
- The database – is highlighted separately, because in contrast to the approach using the CMS contains a clean structure that reflects the subject area. Thus, there is no need to store foreign tables in the database, as is usually the case with WordPress, Joomla and other CMS.
Note also that we don’t need to create a user interface for each project and implement the CRUD logic (create retrieve update delete – create read update delete), because this functionality is provided by the data management system itself.
The key functionality on which the Data Management System is based is scaffolding. Scaffolding is a technology supported by some MVC frameworks, which allows using an additional description (e.g. class attributes) of the data schema to build an application which supports CRUD-functionality of interaction with the database. One of the projects that is actively using this technology is Ruby on Rails. Other systems which use scaffolding include ASP.NET Dynamic Data(.NET) and Django(Python).
So, in general, the data management system is based on :
- Scaffolding System Core is a scaffolding system that allows you to dynamically build a user interface based on subject area classes.
- Data UI Controls, a set of user interface controls that are used by the scaffolding system;
- Data Description Specification – a set of rules by which the subject area classes are augmented with attributes that help the scaffolding system to build the user interface more accurately.
Building a web application using DMS
The design process using DMS can be described as follows :
- Database design
- Creating subject matter classes using ORM (Hibernate, EntityFramework, other object-relational mapping system).
- Adding attributes to the subject area classes (For example, a text field in a database can be rendered in the user interface as: a plain text field, a multi-line text field, WYSIWYG editor).
- Frontend part development (the web application itself)
- Backend development, which comes down to configuration and, if necessary, customization of Data Management System (in most cases, no customization is required to implement CRUD model).
Below is a schematic of how the various components of the project interact.
Limitations when applying the Data Management System
There are some limitations in the case of applying a data management system
- There is no way to share access rights to specific table entries. However, this problem can be circumvented in two ways if necessary :
- The first is to add the necessary logic to the data sampling mechanism;
- The second is to create a customizable form to handle data that requires complex permission checking.
Benefits of using DMS
When we use a data management system, we get the following benefits :
- Complete separation of Frontend and Backend parts of the project;
- creating and maintaining a "clean" database structure;
- Quickly obtaining CRUD data management functionality.
In my practice, I use a data management system built around components such as :
- ASP.NET Dynamic Data;
- Extended set of user interface controls;
- Attribute specifications used in describing domain classes;
- A set of attributes, base classes, and interfaces for extending subject area classes.
In most cases, when I create a web application, I don’t need to customize the data management system. For example, I just need to change the path to the library containing the set of subject area classes – and I can manage a completely different application.
Thus, scaffolding technology in conjunction with extended libraries of controls and flexible specification of attribute descriptions and domain classes allows you to build much more flexible and powerful web applications, without the limitations imposed by common Content Management System.
These links will be more useful to novice developers than to those who already have experience in building web applications :
What is scaffolding (English)
ASP.NET Dynamic Data
ASP. NET Dynamic Data – example of use