Discover the technical Overview of BackBee
BackBee's 3-tier architecture gives third-party applications great independence and scalability.
Backbee core is a headless CMS application exposing an APi allowing the operations expected from a CMS.
Inversion of Control
BackBee components or packages remain independent of each other and any dependencies are declared dynamically via a dependency injection based on symfony / dependency-injection.
Fundamentally event-driven, the BackBee application execution flow relies on an event "sender" and "listeners" to ensure the application has a high capacity to be extended with new functionality.
The main logical components of the application revolve around the following services:
The Security component manages all access control operations on managed items. It is based on the symfony / security- * component and takes over its operating mode.
The Security component is based on two stages:
The component verifies the identity of the requester (visitor to a site, contributor, client of a web service or other). Different secure areas are defined by the implementation of "firewalls" which each carry their own security and authentication context (ex front / back).
Like Symfony, authentication can be provided via different methods:
- Form: supported by the application
- Basic Access: transmission (in clear) of connection information in the headers
- HTTP Digest: transmission (encrypted) of connection information
- Par certificat X.509
- By X.509 certificate WSSE,
- etc ...
2) The authorization:
The component grants access privileges (reading, editing, publication, etc.) to the authenticated requester depending on whether or not he belongs to defined groups to which the rights are attached. The requester can belong to several groups, his rights are determined via voters. At least one of the groups to which it belongs must authorize the right for the right to be validated.
The Routing component is based on the Routing component of symfony and inherits its operations, in particular the definition of routes via patterns (regex), mainly to route actions to ad-hoc controllers (MVC model)
At the heart of application document management, the Workflow component is responsible for the conservation and historicization of the versions of the content managed.
To this end, BackBee introduces a transparent version management system.
This system is based on the general principles of revision control software by transparently creating a copy of the content on which the contributor intervenes.
Once the modifications have been made, the contributor must then submit their modification to BackBee who is in charge:
- to check that no other modification has been validated in the meantime,
- to try to unify any other validated modifications,
- to indicate a possible conflict,
- to assign a new revision number to the validated content,
- to store all intermediate versions of content.
Component for displaying the results of an action, the Renderer component responds to the View brick of the MVC model.
Backbee natively uses the Twig templating (twig / twig) but like Symfony, offers a connector allowing the use of other templating methods, such as PHP or others.
Application cache management center.
The BackBee Cache component brings together the main advanced features present in the latest versions of the cache system:
- The same object can have several caches depending on a context (rendering mode, presence of QueryString parameters, of a user session, etc.)
- Labeling of hidden objects by family allowing batch processing
- Testing for cache items
- Definition of lifespan by object or family of objects
- Global or partial reset of cache elements
Depending on the integrations and the projects, many cases can arise and require heterogeneous hosting architectures:
- Without third-party caching, apps have to manage it themselves
- With a Varnish type cache, offering an entire URL cache
- With a Memcache-type cache, offering a much granular cache management of elements of a page
- With a CDN supporting some of the content
- With a combination of the above solutions
In order to cover as many cases as possible, BackBee is therefore equipped with its own cache and connector allowing it to communicate with the most common third-party systems.
API publishing and extensibility components.
To allow a quick update and extension of the features offered natively by BackBee, all or part of the developments specific to a project can be carried out in extensions.
BackBee's OO programming helps ensure kernel integrity while allowing wide extensibility of native functionality.
The Extensions Manager periodically scans the extensions folder for new extensions to load. They are automatically instantiated in their own namespace.
The definition of BackBee CMS content initially follows the recommendations of the PHP Content Repository standard.
PHPCR provides a standard of access to hierarchical content managed by a content manager to facilitate navigation and exchange with third-party systems. This standard adapted from its Java equivalent (JCR) offers the functionalities.
BackBee CMS stores content definitions in YAML (symfony / yaml) format.
YAML is a Unicode serialization data representation format with the advantage of a very readable and easily editable syntax.
The definition of any complex content in Backbee is based on a set of primary content made available among which:
- ContentSet: Generic content container implementing \ Iterator, \ Countable
- Element\text: Basic text content
- Element\date, extending the text element
- Element\integer, extending the text element
- Element\select, extending the text element
- Element\file: Base file content
- Element\image, extending the file element
- Element\link: Basic link content
- Element\keyword: Core keyword content