Aller à : navigation, rechercher

Maarch RM/Couches logiques

L'architecture de Maarch RM est répartie en 6 couches logiques:

  • la couche de présentation,
  • la couche de service,
  • la couche de logique métier,
  • la couche d'accès aux données,
  • la couche de persistance des données
  • la couche transversale
Vue logique - Couches.png

Présentation

Cette couche permet l'interaction des utilisateurs avec le système pour la réalisation des cas d'usage. Elle publie l'interface homme-machine utilisant les technologies du web (html5, javascript, css) en mode client-serveur http.

Elle fournit 3 types de composants logiques:

Les UserStories décrivent les messages qui peuvent être échangés entre les utilisateurs et le système, organisés en cas d'usage eux-même regroupés par domaine. Il servent à définir le comportement du système, notamment en termes

  • de routage de la requête (RESTful routing)
  • d'établissement des responsabilités des composants dans le traitement ((composer?) --> Api --> (presenter?))
  • d'autorisations des utilisateurs sur les commandes appelées

Les Composers sont responsables de la prise en charge du message de requête émis par l'utilisateur et de la constitution du ou des messages à transmettre à la couche de service.

Les Presenter sont responsables de la prise en charge du message de réponse émis par le couche de service et de leur présentation à l'utilisateur. Pour ce faire, il utilisent des ressources de deux types principaux:

  • les ViewModel sont des modèles de présentation, auxquels sont fusionnées les données de réponse
  • les dictionnaires de traduction permettent de traduire les parties constantes et les variables de réponse dans la langue de l'utilisateur

Service

Cette couche permet l’interaction des clients de service pour l'exécution des fonctionnalités. Elle publie l'interface de programmation (API) pour les fonction des composants de la couche de logique du métier pour les clients de service http ou en ligne de commande du système (CLI).

Elle fournit 3 types de composants logiques:

Les APIs décrivent les messages qui peuvent être échangés entre les clients de service et le système, organisés en APIs elles-même regroupés dans des paquets (bundles). Elles servent à définir le comportement du système, notamment en termes

  • de routage de la requête lorsqu'elle émane d'un client (RESTful routing, sauf lorsque la requête émane de la couche de présentation)
  • d'établissement des responsabilités des composants dans le traitement ((parser?) --> Controller --> (serializer?))
  • d'autorisations des comptes de service sur les services demandés

Logique du métier

Aussi appelée couche métier, elle est responsable du respect des règles définies pour les opérations sur les données du domaine.

Pour ce faire, elle fournit deux types de composants :

Les Controllers décrivent le comportement du système pour les opérations sur les données du domaine métier. Ils regroupent les fonctions de manipulation d'un type d'entité (ou de plusieurs pour les agrégats).

Le Model décrit la structure des données du modèle du domaine métier, sous la forme de classes qui possèdent

  • un nom unique dans un espace de nom (paquet métier)
  • un identifiant principal (clé primaire) et de possibles identifiants secondaires (unicité)
  • des relations d'association avec d'autres entités (clés étrangères)
  • une liste de propriétés ayant chacune
    • un nom unique dans la classe
    • un type de données
    • des contraintes sur le contenu (non null, valeurs possibles, limites, masque...)


Accès aux données

Cette couche est responsable de l'accès aux données persistantes et de la cohérence de l'information sur les supports, lors des opérations de lecture et d'écriture des données.

Elle est essentiellement fournie par des services de dépendance adaptés aux différentes technologies, qui peuvent être globalement regroupées en 3 catégories:

  • l'accès aux bases de données
  • l'accès aux contenus binaires sur des systèmes de fichiers
  • l'accès aux services de données de fournisseurs tiers (horodatage, e-mail...)

Persistance

Il s'agit des systèmes logiciels dont le rôle est d'assurer la persistance de l'information entre deux appels aux fonctions. L'application Maarch RM ne fournit pas de composant logiciel dans cette couche mais définit des pré-requis et fournit notamment le schéma de l'information pour la base de données.

L'application Maarch RM requiert

  • une base de données SQL pour les référentiels du métier
  • un système de fichiers pour les sas d'échange et le stockage des données d'archives

Transversal

Cette couche fournit des fonctionnalités utiles à toutes les autres, et prend en charge la gestion opérationnelle du traitement depuis la réception du message de requête jusqu'à l'émission du message de réponse, notamment :

  • la communication avec le client, le routage selon la déclaration des APIs et UserStories
  • la détermination des responsabilités des composants dans le traitement
  • la gestion de la configuration : son chargement, son interprétation, son utilisation
  • la production de traces technique de l'exécution
  • la gestion des erreurs et exceptions
  • la personnalisation par surcharge du code standard
  • l'observation des événements
  • la réflexion des composants livrables
  • l'injection des services de dépendance
  • la gestion du cache système et http
  • la gestion du chiffrement et des jetons assurant l'aspect "stateless"
  • l'intégration d'outils tiers
  • ...