CESI: Architecture N tiers

This commit is contained in:
wpetit 2018-01-13 18:02:29 +01:00
parent c8caed6efc
commit 703ca7d4fb
6 changed files with 97 additions and 10 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -44,9 +44,8 @@ table { font-size: 0.6em !important; }
### Les différentes topologies
### Communication client/serveur
### Répartition des traitements
### Le middleware
### Exercice : Implémentation d'une calculatrice par TCP/IP
### La couche intergiciel
### Exercice : Utilisation d'un couche JSON-RPC2 pour la calculatrice TCP/IP
---
## Définitions
@ -130,6 +129,57 @@ La conception d'une application distribuée nécessite d'établir une répartiti
---
## Le middleware (1)
Aussi appelé "intergiciel" ou "intersticiel" en français.
### Rôle
- Ensemble de services logiciels construits au dessus dun
protocole de transport afin de permettre léchange de
requêtes et des réponses associées entre client et serveur de
manière transparente.
- Les services du middleware sont un ensemble de logiciels
répartis qui existe entre lapplication, lOS et les services
réseaux sur un nœud du réseau.
---
## Le middleware (2)
### Fonctions
- Procédure détablissement de connexion
- Exécution des requêtes
- Récupération des résultats
- Procédure de fermeture de connexion
- Gestion des accès concurrents
- Sécurité et intégrité
- Monitoring
- Terminaison des processus
- Mise en cache des résultats
- Mise en cache des requêtes
---
## Le middleware (3)
### Différentes techniques
- **Échange de messages**, ou MOM - Message Oriented Middleware. Exemple: AMQP, NATS
- **Appel de procédures distantes**, ou RPC. Exemple: JSON-RPC2, SOAP.
- **Manipulation d'objets** Exemple: DCOMM, CORBA, RMI
---
## Le middleware (4)
### Exemple: RPC
![center](./img/rpc.png)
---
## Exercice
### Implémentation d'une calculatrice à état distribuée en NodeJS
@ -138,19 +188,38 @@ La conception d'une application distribuée nécessite d'établir une répartiti
## L'architecture 3 tiers
### Principes
### Modèle transactionnel
### Généralités
### Sécurité
### Exercice : Implémentation de couche de présentation (HTML/CSS et ligne de commande) multiple pour une même couche logique et de données
---
## Les architectures n-tiers
## Généralités (1)
### Principes
### Approche objet et notion de responsabilité
### Communication inter-composants
### Exercice : Présentation de l'architecture orientée « micro-services » et implémentation d'une application basée sur ce patron de conception.
### Principe
L'architecture 3 tiers est le modèle d'architecture applicative le plus utilisé aujourd'hui dans la conception d'application. Il propose de découper l'application en 3 couches aux rôles distincts:
- Couche de **présentation**
- Couche de **traitement/logique/métier**
- Couche de **persistence/données**
---
## Généralités (2)
### Exemple: Application LAMP (Linux, Apache, PHP, MySQL)
![center](./img/lamp.png?1)
---
## Modèle N tiers
---
## Modèle Pair à pair
---

View File

@ -18,7 +18,7 @@ Le client/serveur devront gérer les instructions suivantes:
- `status` Requête de récupération de la valeur de l'accumulateur sur le serveur
- `reset` Requête de réinitialisation de la valeur de l'accumulateur sur le serveur.
Vous pouvez vous baser sur les fichiers `client.js` et `server.js` présent dans ce répertoire pour amorcer votre projet.
Vous pouvez vous baser sur les fichiers `client.js` et `server.js` présents dans ce répertoire pour amorcer votre projet.
## Exemple de séquence d'échange
@ -28,3 +28,4 @@ Vous pouvez vous baser sur les fichiers `client.js` et `server.js` présent dans
- [Télécharger/installer NodeJS](https://nodejs.org/en/download/)
- [Le module `net` de NodeJS](https://nodejs.org/api/net.html)
- [NodeJS - Livre du débutant](https://nodejs.developpez.com/tutoriels/javascript/node-js-livre-debutant/)

View File

@ -0,0 +1,17 @@
msc {
wordwraparcs=true, hscale=2;
Client,ClientMiddleware,ServerMiddleware,Server;
Client->ClientMiddleware [ label="server.getBlogPosts()" ];
ClientMiddleware->ClientMiddleware [ label="serializeCall('server.getBlogPosts')" ];
ClientMiddleware->ServerMiddleware [ label="CALL getBlogPosts" ];
ServerMiddleware->ServerMiddleware [ label="deserialize('CALL getBlogPosts')" ];
ServerMiddleware->Server [ label="getBlogPosts()" ];
Server->ServerMiddleware [ label="[{title: 'Article 1'}, {title: 'Article 2'}, ...]" ];
ServerMiddleware->ServerMiddleware [ label="serializeResult([{title: 'Article 1'}, {title: 'Article 2'}, ...])" ];
ServerMiddleware->ClientMiddleware [ label="RES <data...>" ];
ClientMiddleware->ClientMiddleware [ label="deserializeResult('RES <data...>')" ];
ClientMiddleware->Client [ label="[{title: 'Article 1'}, {title: 'Article 2'}, ...]" ];
}