Architecture et Backend - jclaerhout/Projet_Web_III_2023 GitHub Wiki
Architecture
Schéma représentant l'architecture de l'application Web
- Ajouter service externes comme unsplash, google maps
- Ajouter la norme HTTPS
Explication textuelle du schéma
Lorsqu'un utilisateur interagit avec l'application Vue.js, celle-ci envoie des requêtes HTTP vers le backend Node.js. Ces requêtes sont traitées par le serveur Express, qui utilise le pilote Node.js MariaDB pour accéder à la base de données MariaDB et exécuter des requêtes SQL.
Le serveur Express peut avoir des middlewares pour effectuer des opérations telles que la validation de données, la vérification d'authentification, etc.
Lorsque le serveur Express a terminé de traiter la requête, il renvoie une réponse HTTP au client, qui peut inclure des données au format JSON, XML ou tout autre format pris en charge par le client. Le client utilise ensuite ces données pour mettre à jour l'interface utilisateur.
Backend
NodeJs/Express
- Justification du choix
NodeJs est un environnement d'exécution JavaScript côté serveur qui permet de créer des applications web rapidement et efficacement. Il utilise une architecture orientée événements et non bloquante, ce qui le rend très performant et adapté aux applications en temps réel. De plus, en utilisant NodeJs avec Express, nous avons choisi un framework très populaire et largement utilisé pour la création d'applications web. Il offre de nombreuses fonctionnalités, telles que la gestion des routes, la gestion des erreurs, la création de middlewares, ainsi que la possibilité d'ajouter des extensions et des modules tiers. Express est également facile à apprendre et à utiliser, ce qui nous permettra de développer rapidement notre application.
Sources: https://nodejs.org/en/docs/, https://expressjs.com/fr/
Comparaison avec Ruby et Django
Ruby: Ruby on Rails est un framework web basé sur le langage de programmation Ruby. Il est connu pour sa simplicité et sa rapidité de développement, car il est livré avec de nombreux outils et bibliothèques pour simplifier la création d'applications web.
Cependant, comparé à Node.js/Express, Ruby on Rails est souvent considéré comme plus lent et plus gourmand en ressources. Cela peut être un problème si il faut gérer un grand volume de trafic oupour la création d'une application web qui nécessite beaucoup de traitement en temps réel.
Django: Un framework web basé sur Python. Comme Ruby on Rails et Express, Django suit une architecture MVC(Modèle/Vue/Contrôleur) et offre des outils et des bibliothèques pour faciliter la création d'applications web. Il est également connu pour sa rapidité et sa capacité à gérer un grand volume de trafic.
Cependant, comparé à Node.js/Express, Django peut être considéré comme plus restrictif en termes de personnalisation et de flexibilité. Il est également connu pour avoir une courbe d'apprentissage plus abrupte que Node.js/Express.
Sources: https://rubyonrails.org/, https://www.djangoproject.com/
- Organisation du code
[Présentation La structure/hiérarchie des fichiers et dossiers du code source du backend]
- Diagramme de classes UML
[Diagramme de classes] [Explication textuelle du diagramme de classes]
-
Fonctionnement du backend
-
Réception de la requête: Lorsqu'une requête est envoyée par le client (par exemple, en cliquant sur un bouton ou en soumettant un formulaire), le serveur la reçoit.
-
Routage: Le routeur Express traite la requête et la compare à la liste des routes définies dans l'application. Si une route correspond à la requête, Express exécute la fonction associée à cette route.
-
Traitement de la requête: La fonction peut effectuer différentes opérations, telles que la récupération de données à partir de la base de données, la validation de la saisie de l'utilisateur, etc.
-
Interaction avec la base de données: Si la fonction nécessite des données à partir de la base de données, elle envoie une requête à MariaDB pour récupérer ces données. MariaDB renvoie ensuite les données à l'application.
-
Traitement de la réponse: Une fois que toutes les opérations nécessaires sont effectuées, l'application construit une réponse en utilisant les données et envoie la réponse au client.
-
Réponse: Le client reçoit la réponse et peut afficher les données à l'utilisateur.
-
Base de données
MariaDB
- Justification du choix
En choisissant MariaDB comme système de gestion de base de données, Nous avons opté pour une solution open source très performante et fiable. MariaDB est une base de données relationnelle compatible avec MySQL, qui est largement utilisée dans le monde entier pour les applications web. Elle offre de nombreuses fonctionnalités avancées, telles que la réplication en temps réel, la montée en charge horizontale et la sécurité renforcée.
Source: https://mariadb.org/
- Diagrammes
Entité Association
Entité Relationnelle
- Description Tables
- User : une par utilisateur avec ses informations générales
User_id : l'id de l'utilisateur, unique à chaque compte
User_name : le nom de l'utilisateur
User_firstname : le prénom de l'utilisateur
User_email : l'adresse mail de l'utilisateur User_password : mot de passe de l'utilisateur User_location : l'emplacement de l'utilisateur, ce n'est pas un emplacement en temps réel
User_level : le "niveau" de l'utilisateur, si c'est un photographe professionnel ou amateur
User_role : le rôle de l'utilisateur, un booléen pour savoir si l'utilisateur est admin ou pas
- Pictures : une par image posté sur le site et liée à l'utilisateur ainsi qu'aux filtres appliqués dessus
Pictures_id : l'id de l'image, unique à chaque image
User_id : l'id de l'utilisateur qui a posté la photo
Picture_link : le lien de l'image pour la retrouver sur le serveur
Picture_description : Description de l'image faite par l'utilisateur