Principes techniques BackBee

Découvrez les principes techniques de BackBee.

Architecture

Architecture 3-tiers

L’architecture 3-tiers de BackBee assure aux applications tierces une grande indépendance et une grande extensibilité.

Application Headless

Backbee core est une application CMS headless exposant une APi permettant les opérations attendues de la part d'un CMS.

Inversion de Contrôle

Les composants ou packages de BackBee restent indépendants les uns des autres et les éventuelles dépendances sont déclarées dynamiquement via une injection de dépendances basée sur symfony/dependency-injection.

Orientation Evènementielle

Fondamentalement événementiel, le flux d’exécution de l’application BackBee repose sur un « émetteur » et des « écouteurs » d’événements assurant à l’application une grande capacité à être étendue par de nouvelles fonctionnalités.

 

Composants

Les principaux composants logiques de l’application s’articulent autour des services suivants :


Security

Le composant Security gère l’ensemble des opérations de contrôle d’accès sur les éléments gérés. Il repose sur le composant symfony/security-* et en reprend le mode de fonctionnement.

Le composant Security repose sur deux étapes :

1) L’identification :

Le composant vérifie l’identité du requêtant (visiteur d’un site, contributeur, client d’un  webservice ou autre). 
Différentes zones sécurisées sont définies par la mise en place de « firewalls » qui portent chacun leur contexte de sécurité et d’authentification (ex front / back).


A l’instar de Symfony, l’authentification peut être assurer via différentes méthodes :

  • formulaire : prise en charge par l’application
  • Basic Access : transmission (en clair) des informations de connexion dans les headers
  • HTTP Digest : transmission (cryptée) des informations de connexion
  • Par certificat X.509
  • WSSE,
  • etc ...

 

2) L’autorisation :

Le composant accorde des privilèges d’accès (lecture, édition, publication…) au requêtant authentifié en fonction de son appartenance ou non à des groupes définis et auxquels sont attachés les droits.
Le requêtant peut appartenir à plusieurs groupes, ses droits sont déterminés via des voters. Il faut qu’au moins un des groupes auquel il appartient autorise le droit pour que le droit soit validé.


Routing 

Le composant Routing repose sur le composant Routing de symfony et hérite de son fonctionnements, notamment la définition de route via des patterns (regex), principalement pour router les actions vers les controllers ad-hoc (modèle MVC)


Workflow

Cœur de la gestion documentaire applicative, le composant Workflow est responsable de la conservation et l’historisation des versions du contenu gérés.

A cet effet, BackBee  introduit un système de gestion transparente de versions. 
Ce système repose sur les principes généraux des logiciels de contrôle de révision en créant de manière transparente une copie du contenu sur lequel intervient le contributeur.

Une fois les modifications apportées, le contributeur doit alors soumettre sa modification à BackBee  qui est en charge :

  • de vérifier qu’aucune autre modification n’a été validée entre temps,
  • de tenter d’unifier les éventuelles autres modifications validées,
  • d’indiquer un éventuel conflit,
  • d’attribuer un nouveau numéro de révision au contenu validé,
  • de stocker l’ensemble des versions intermédiaires d’un contenu.

 

Renderer

Composant d’affichage des résultats d’une action, le composant Renderer répond à la brique View du modèle MVC.
Backbee utilise nativement le templating Twig (twig/twig) mais à l’instar de Symfony, propose un connecteur permettant dutiliser d’autres méthodes de templates, tel que PHP ou autres.


Cache

Centre de gestion des caches applicatifs.

Le composant Cache de BackBee  réunit les principales fonctionnalités avancées présentes dans les dernières versions de système de cache :

  • Un même objet peut avoir plusieurs caches en fonction d’un contexte (mode de rendu, présence de paramètres QueryString, d’une session utilisateur, …)
  • Étiquetage des objets cachés par famille permettant le traitement par lot
  • Test des éléments cachés
  • Définition de durée de vie par objet ou famille d’objets
  • Réinitialisation globale ou parcellaire des éléments cachés

Selon les intégrations et les projets, de nombreux cas peuvent apparaître et solliciter des architectures d’hébergement hétérogènes :

  • Sans système de cache tiers, les applications doivent le gérer elles-mêmes
  • Avec un cache de type Varnish, proposant un cache d’URL entière
  • Avec un cache de type Memcache, proposant une gestion de cache beaucoup granulaire d’éléments d’une page
  • Avec un CDN prenant en charge une partie du contenu
  • Avec une combinaison des solutions précédentes

Afin de couvrir le plus de cas possibles, BackBee  est donc doté d’un cache propre et de connecteur lui permettant de dialoguer avec les systèmes tiers les plus courants.


Bundles

Composants de publication d’API et d’extensibilité.

Pour permettre une mise à jour rapide et l’extension des foncionnalités proposées nativement par BackBee, l’ensemble ou partie des développements spécifiques à un projet peuvent être réalisés dans des extensions. 

La programmation OO de BackBee  permet d’assurer l’intégrité du noyau tout en permettant une large extensibilité des fonctionnalités natives.

Le gestionnaire d’extensions parcourt régulièrement le dossier d’extensions à la recherche de nouvelles extensions à charger. Elles sont automatiquement instanciées dans leur propre espace de nom (namespace).

 

Gestion des contenus


La définition des contenus de BackBee CMS suit au départ les recommandations du standard PHP Content Repository.

PHPCR fournit un standard d’accès à un contenu hiérarchisé géré par un gestionnaire de contenu en vue d’en faciliter le parcours et l’échange avec des systèmes tiers.  Ce standard adapté de son équivalent Java (JCR) offre les fonctionnalités.

BackBee CMS stocke  les définitions de contenu au format YAML (symfony/yaml).

Le YAML est un format de représentation de données par sérialisation Unicode dont l’avantage est une syntaxe très lisible et facilement éditable.

La défintion de tout contenu complexe dans Backbee est basée sur un ensemble de contenus primaires mis à disposition parmi lequels :

  • ContentSet : Conteneur générique de contenu implémentant \Iterator, \Countable
  • Element\text : Cotnenu texte de base
  • Element\date, étendant l’élément text
  • Element\integer , étendant l’élément text
  • Element\select , étendant l’élément text
  • Element\file : Contenu fichier de base
  • Element\image , étendant l’élément file
  • Element\link : Contenu lien de base
  • Element\keyword  : Contenu mot-clefs de base

A lire aussi

Roadmap

Notre Roadmap actuelle pour la version 4.x

Téléchargement

Backbee est un projet open-source disponible sur github sous licence GPL.

Guide d'installation

Merci de suivre ce guide d'installation pour installer BackBee.