Skip to content

Analyse technique

Patson edited this page Mar 26, 2022 · 36 revisions

Architecture

[Schéma représentant l'architecture de l'application Web]

test

Explication du schéma de l'application web.

1. Le client intéragit avec le Frontend (point 1 et 2):

Les pages de l'application web permettent d'informer le client en fournissant la page web proprement dite (point 2) et également de récupérer des informations qu'il aura données comme pour la réservation d'une voiture par exemple (point 1). Le type données échangées sont des strings.

2. L'admin interragit avec le Frontend (point 9 et 10):

Les pages utilisateurs sont visibles à l'admin pour des raisons de maintenance mais également des pages administratives qui lui permettent de maintenir l'état du site à jour. L'administrateur peut donner des informations au frontend (point 10) comme pour l'ajout de voiture par example et aussi en reçevoir comme l'affichage des pages (point 9). Le type données échangées sont des strings.

3. Le frontend interragit avec l'API (point 3 et 4):

Le frontend peut , grâce à l'API, interragir avec le Backend , via le biai de endpoint ou point de terminaison, pour permettre au frontend d'initier des appels de ressources et des envois de ressources vers la DB. Le frontend et l'API communique entre eux avec des objets.

4. L'API interragit avec le backend (point 5 et 6):

L'API peut rediriger les requêtes initiées par le frontend avec le endpoint (et donc par un utilisateur du site) , et les transformer en requête SQL proprement dites. L'API utilise des requêtes HTPP (methodes POST, GET, etc) pour interragir avec le backend.

5. Le backend interragit avec la DB (point 7 et 8):

Le backend peut, via des requêtes SQL insérer des données dans la DB (point 7) ou seulement en récupérer (point 8).

Backend : NodeJS-Express

1. Justification du choix

Express est un framework sortit en 2010, qui permet de construire des applications web basées sur nodeJS. Grâce aux méthodes utilitaires http et de middleware qui sont à disposition, la création d'une API est simple et rapide.

Avantages de NodeJS-Express:

  • NodsJs-Express travaille en asynchrone ce qui lui permet de continuer son exécution et de ne pas devoir attendre qu'un module ai fini,
  • Il est fort utilisé dans les grandes entreprises,
  • Il possède une communauté très active de développeurs,
  • Il peut prendre en charge plusieurs requêtes du à sa caractéristique asynchrone,
  • Il intègre un serveur.

Comparaison avec PHP (symfony):

  • La caractéristique asynchrone d'Express lui procure une vitesse d'exécution et des performances plus importantes que PHP,
  • La courbe d'apprentissage de Symphony est extrêmement rude, en effet ce framework est connu pour être assez dur à comprendre,
  • L'initialisation d'un projet avec Express est extrêmement simple et par extension plus simple qu'avec symfony,
  • L'asynchronicité d'Express permet également une meilleur gestion des requêtes qu'avec Symphony.

Comparaison avec Django:

  • NodeJs offre la possibilité de travailler en asynchrone contrairement à Django,
  • Cette caractéristique rend Express beaucoup plus rapide que Django,
  • Express est plus adapté à des petits projets de développement contrairementà Django qui est plus utile et utilisé dans les grands pojets web,
  • Beaucoup de module fonctionnant avec Django sont assez ancien et provoque parfois des problèmes compatibilité avec des modules plus récent. Ce problème est moins présent avec express.
  • Express n'impose pas d'architecture spécifique pour les websApps, le développeur est libre de choisir (avec django on travaille avec le model MVT).

Sources:

2. Organisation du code

  • /backend : accueillera tous les fichiers js et sql du backend de notre application
  • /controllers : accueillera tous les fichiers js qui vont effectuer les requêtes vers la base de données et obtenir les reponses
  • /middlewares : acceuillera tous les fichiers js qui vont vérifier les requêtes (ex authentification de l'utilisateur via token )
  • /routes : acceuillera tous les fichiers js qui vont contenir nos routes et faire la liaison avec le dossier controller
  • /app.js : fichier d'initialisation de l'application express contient tous les middlewares pour effectuer des requêtes vers des routes
  • /server.js : Fichier d'initialisation du server http
  • /db.sql : Fichier sql de creation de la base de données postgresql
  • /db_dump.sql : Fichier sql qui contient toutes les modifications effectué depuis le départ sur la base de données postgresql
    /backend
        /controllers
            car.js
        /middleware
        /routes
            car.js
        app.js
        db.js
        db.sql
        db.dump.sql
        package.json
        package-lock.json
        server.js

3. Diagramme de classes UML

[Diagramme de classes] [Explication textuelle du diagramme de classes]

4. Fonctionnement

[Explication du fonctionnement du backend. Par exemple : Explication du "voyage" d'une requête entre la réception de la requête sur une route donnée et l'envoi d'une réponse]

Prenons le cas où l'utilisateur arrive sur la page cars du site et souhaite afficher toutes les voitures disponible. Au chargement de cette page, une requête vers la route GET /cars.

La requête transmise arrive dans le fichier app.js et est transmise à la route cars

La route cars à son tour la transmet au controlleur getCars qui va effectuer la requête vers la base de données

Une fois les données récupérées de la DB, elles sont directement transmises vers le frontend sous format json via la réponse

Clone this wiki locally