relecture reseau, intro et technique

This commit is contained in:
2018-09-18 17:33:29 +02:00
parent e151a01e11
commit c7c2f8ce2c
8 changed files with 56 additions and 33 deletions

View File

@@ -4,15 +4,21 @@
L'application est construite selon une architecture trois tiers qui va séparer la partie interface utilisateur de la partie traitement et des données. La couche de présentation sera appelée par la suite \emph{frontend} et celle de traitement \emph{backend}. Pour échanger des informations entre eux, ces tiers doivent utiliser des protocoles et un formatage précis.
Schéma architecture
\vspace{3mm}
\begin{figure}[h]
\centering
\includegraphics[width=150mm]{application_architecture}
\caption{Architecture de l'application}
\end{figure}
\vspace{3mm}
La communication entre le frontend et le backend se fait au travers d'un API \gls{restful} basé sur des échanges HTTP. Son implémentation du coté backend est assuré par le framework RubyOnRails et du coté frontend par EmberJS. Pour se comprendre, ces deux librairies respectent le même standard pour sérialiser l'information. Il s'agit de la spécification json:api\cite{jsonapi} dont l'implémentation coté backend est faite grâce au module ActiveModelSerializer\cite{activemodelserializer} et du coté frontend par la classe DS.JSONApiSerializer\cite{dsjsonapiserializer}. Cette convention décrit un ensemble de règles qui définissent comment les informations doivent être mises en forme dans une API qui utilise le JSON comme format de donnée. Cette structure force donc le développeur à structurer correctement les données et est une mise en application supplémentaire du paradigme "Convention plutôt que configuration".
La communication entre le frontend et le backend se fait au travers d'un API \gls{restful} basé sur des échanges HTTP. Son implémentation du coté backend est assuré par le framework RubyOnRails\cite{railssite} et du coté frontend par EmberJS\cite{emberjssite}. Pour se comprendre, ces deux librairies respectent le même standard pour sérialiser l'information. Il s'agit de la spécification \emph{json api}\cite{jsonapi} dont l'implémentation coté backend est faite grâce au module ActiveModelSerializer\cite{activemodelserializer} et du coté frontend par la classe DS.JSONApiSerializer\cite{dsjsonapiserializer}. Cette convention décrit un ensemble de règles qui définissent comment les informations doivent être mises en forme dans une API qui utilise le JSON comme format de donnée. Cette structure force donc le développeur à structurer correctement les données et est une mise en application supplémentaire du paradigme "Convention plutôt que configuration".
Les échanges entre le backend et MongoDB sont assurés par le module Mongoid\cite{mongoid}. Cette extension applique le \emph{Data mapper pattern} en gérant la correspondance entre les objets définit en Ruby et les collections d'objets de la base de donnée. Elle va également fournir les méthodes pour interagir avec ces collections, comme par exemple les requêtes de recherche sur les objets.
\section{Technologies et versions}
L'ensemble de la solution utilisent différentes technologies qui doivent toutes être supportées pour assurer son bon fonctionnement. Les programmes principaux sont listés dans le tableau ci-dessous:
L'ensemble de la solution utilisent différentes technologies qui doivent toutes être supportées pour assurer son bon fonctionnement. Les programmes principaux sont listés dans le tableau ci-dessous:
\vspace{3mm}
\begin{table}[H]
@@ -26,10 +32,10 @@ L'ensemble de la solution utilisent différentes technologies qui doivent toutes
Bundler & 1.16.1 & Gestionnaire de dépendances pour Ruby \\ \hline
Rails & 5.1.6 & Framework pour l'application backend \\ \hline
NodeJS & 8.1 & Moteur pour application Javascript \\ \hline
NPM & ? & Gestionnaire de dépendance de NodeJS \\ \hline
NPM & 6.2.0 & Gestionnaire de dépendance de NodeJS \\ \hline
Ember-CLI & 3.3.0 & Framework pour l'application frontend \\ \hline
MongoDB & ? & Système de base de donnée non-relationnel \\ \hline
Redis & ? & Base de donnée en mémoire \\ \hline
MongoDB & 4.0.2 & Système de base de donnée non-relationnel \\ \hline
Redis & 4.0.11 & Base de donnée en mémoire \\ \hline
\end{tabular}
\end{table}
\vspace{3mm}