CESI: Architecture N tiers
This commit is contained in:
parent
c8caed6efc
commit
703ca7d4fb
BIN
cesi/architecture_n_tiers/presentation/img/lamp.png
Normal file
BIN
cesi/architecture_n_tiers/presentation/img/lamp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
BIN
cesi/architecture_n_tiers/presentation/img/rpc.png
Normal file
BIN
cesi/architecture_n_tiers/presentation/img/rpc.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 54 KiB |
@ -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 d’un
|
||||
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 l’application, l’OS 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
|
||||
|
||||
---
|
||||
|
||||
|
@ -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/)
|
||||
|
17
cesi/architecture_n_tiers/ressources/rpc.msc
Normal file
17
cesi/architecture_n_tiers/ressources/rpc.msc
Normal 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'}, ...]" ];
|
||||
}
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user