zakimoulayabdellah
12-17-2006, 03:23 PM
But : structurer les applications en clients et serveurs.
Une application informatique est représentée selon un modèle en trois couches:
la couche présentation (interface Homme/Machine):
gestion de l’affichage (exemple Windows, X-windows, etc.),
logique de l’affichage, partie intrinsèque de l’applicatif qui transmet à la gestion de l’affichage, les éléments de présentation.
la couche traitements qui constitue la fonctionnalité intrinsèque de l’application :
la logique des traitements : l’ossature algorithmique de l’application,
la gestion des traitements déclenchés par la logique de traitements qui réalise la manipulation des données de l’applicatif (ex: procédures SQL).
la couche données qui assure la gestion des données applicatives:
la logique des données constituant les règles régissant les objets de la base de données,
la gestion des données (consultation et mise à jour des enregistrements). Un système de type SGBDR, habituellement, est responsable de cette tâche.
Le découpage permet de structurer une application en mode client/serveur; exemple:
le module de gestion des données peut être hébergé par un serveur distant,
le module de gestion de l’affichage peut également être géré par un serveur distant (un Terminal X par exemple).
Le mode de communication
mode non-connecté, l’arrivée des données + ordonnancement + non duplication ne sont pas garantis par le protocole; ==> à gérer par l’application.
l’approche non-connecté implique généralement une connexion synchrone;
le mode connecté implique une diminution des performances par rapport au mode non connecté: ceci est une contrainte pour certaines applications.
le mode connecté permet une implémentation asynchrone des échanges, plus complexe mais plus performantes que le mode non-connecté.
Conception Client
Une application cliente est moins complexe que son homologue serveur car:
la plupart des applications clientes ne gèrent pas d’intéractions avec plusieurs serveurs,
la plupart des applications clientes sont traitées comme un processus conventionnel; au contraire, un serveur nécessite des accès privilégiés de connexion au middleware.
la plupart des applications clientes ne nécessitent pas de protection supplémentaires, le système d’exploitation assurant les protections élémentaires suffisantes
Conception Serveur
Processus serveur:
Offre une connexion sur le réseau,
Entre indéfiniment dans un processus d’attente de requêtes clientes,
Lorsqu’une requête arrive, le serveur déclenche les processus associés à cette requête, puis émet la ou les réponses vers le client.
Problème : gérer plusieurs client simultanément.
Les types de serveurs
serveurs itératifs: ne gérent qu’un seul client à la fois
serveurs paralléles : fonctionnent « en mode concurrent ».
les serveurs itératifs en mode non-connecté:
offrent une interface de communication sur le réseau en mode non-connecté,
indéfiniment : réceptionnent une requête client, formulent une réponse, et renvoient le message réponse vers le client selon le protocole applicatif défini.
les serveurs itératifs en mode connecté:
offrent une connexion sur le réseau en mode connecté,
(*) réceptionnent une connexion client,
offrent une nouvelle connexion sur le réseau,
répétitivement : réceptionnent une requête pour cette connexion, formulent une réponse, et renvoient le message réponse vers le client,
lorsque le traitement pour ce client est terminé -->(*).
les serveurs paralèlles en mode non-connecté:
offrent une interface de communication en mode non-connecté,
répétitivement : réceptionnent la requête client; offrent une nouvelle interface de communication sur le réseau, et créent un processus secondaire (PR. S.) chargé de traiter la requête courante.
(PR. S.) : formule une réponse à la requête client, et renvoient le message,
(PR. S.) : lorsque le traitement est terminé, libére la communication, Exit.
les serveurs concurrents en mode connecté:
offrent une connexion sur le réseau en mode connecté,
répétitivement : réceptionnent une connexion client, offrent une nouvelle connexion sur le réseau, créent un PR. S. chargé de traiter la connexion courante.
(PR. S.) : répétitivement : réceptionne une requête pour cette connexion, formule une réponse, et renvoit le message réponse vers le client selon le protocole applicatif défini,
(PR. S.) : lorsque le traitement est terminé (propre au protocole applicatif), libère la connexion, Exit.
Quel type de serveur utiliser ?
serveurs itératifs en mode non-connecté : services qui nécessitent très peu de traitement par requête (pas de concurrence). Exemple: serveur TIME
serveurs itératifs en mode connecté : services qui nécessitent très peu de traitement par requête mais requièrent un transport fiable de type TCP. Peu utilisé.
serveurs concurrents en mode non-connecté : pas utilisé sauf si :
temps de création d’un processus extrêmement faible (dépend du système d’exploitation hôte) par rapport au temps de traitement d’une requête,
les requêtes nécessitent des accès périphériques importants (dans ce cas, la solution itérative est, en effet, inacceptable).
serveurs concurrents en mode connecté : offre un transport fiable et est capable de gérer plusieurs requêtes de différents clients simultanément; implémentation:
multi instanciation de processus avec un processus primaire et des processus secondaires traitant les connexions clientes,
avec un seul processus gérant les multiples connexions par l’intermédiaire de requêtes asynchrones et primitive d’attente d’évènements multiples.
Les Socket
Les sockets : interface client/serveur utilisée à l’origine dans le monde UNIX et TCP/IP.
Etendue aujourd’hui du micro (Cf Winsock) au Mainframe.
fournit les primitives pour le support des communications reposant sur toute suite de protocoles; les protocoles TCP/IP sont à l’origine des développements.
Les applicativions cliente et serveur ne voient les couches de communication qu’à travers l’API socket (abstraction):
Elles permettent d’établir un lien de communication en mode connecté ou non-connecté sur un réseau,
Structurent une application
soit en mode client ,
soit en mode serveur,
Permettent d’échanger des données entre ces applications.
La primitive socket:
point d’encrage qui permet à l’application d’obtenir un lien de communication vers la suite de protocole qui servira d’échange,
définit le mode de communication utilisé (connecté ou non-connecté).
La primitive bind: permet de spécifier le point de terminaison local (essentiellement le port TCP/UDP dans l’environnement TCP/IP).
la primitive connect:
permet à un client d’établir une communication active avec un serveur,
le point de terminaison distant (adresse IP + port TCP/UDP dans l’environnement TCP/IP) est spécifié lors de cet appel.
la primitive listen :
permet à un serveur d’entrer dans un mode d’écoute de communication ,
dés lors le serveur est « connectable » par un client,
le processus est bloqué jusqu’à l’arrivée d’une communication entrante.
la primitive accept :
permet à un serveur de recevoir la communication entrante (client),
crée un nouveau socket et retourne le de******eur associé à l’application.
le serveur utilise ce de******eur pour gérer la communication entrante
le serveur utilise le de******eur de socket précédent pour traiter la prochaine communication à venir.
les primitives read et write:
Lorsque la communication est établie, client et serveur échangent des données afin d’obtenir (client) et transmettre (serveur) le service désiré.
En mode connecté, clients et serveurs utilisent read et write; en mode non-connecté, ils utilisent les primitives recvfrom et sendto.
la primitive close : termine la connexion et libère le socket associé.
En mode non-connecté:
le client n’établit pas de connexion avec le serveur mais émet un datagramme (sendto) vers le serveur.
Le serveur n’accepte pas de connexion, mais attend un datagramme d’un client par recvfrom qui transmet le datagramme à l’application ainsi que l’adresse client.
Les sockets en mode non-connecté peuvent utiliser la primitive connect pour associer un socket à une destination précise. ==> send peut être utilisée à la place de la sendto,
De même, si l’adresse de l’émetteur d’un datagramme n’intéresse pas un processus la primitive recv peut être utilisée à la place de la primitive recvfrom.
Une application informatique est représentée selon un modèle en trois couches:
la couche présentation (interface Homme/Machine):
gestion de l’affichage (exemple Windows, X-windows, etc.),
logique de l’affichage, partie intrinsèque de l’applicatif qui transmet à la gestion de l’affichage, les éléments de présentation.
la couche traitements qui constitue la fonctionnalité intrinsèque de l’application :
la logique des traitements : l’ossature algorithmique de l’application,
la gestion des traitements déclenchés par la logique de traitements qui réalise la manipulation des données de l’applicatif (ex: procédures SQL).
la couche données qui assure la gestion des données applicatives:
la logique des données constituant les règles régissant les objets de la base de données,
la gestion des données (consultation et mise à jour des enregistrements). Un système de type SGBDR, habituellement, est responsable de cette tâche.
Le découpage permet de structurer une application en mode client/serveur; exemple:
le module de gestion des données peut être hébergé par un serveur distant,
le module de gestion de l’affichage peut également être géré par un serveur distant (un Terminal X par exemple).
Le mode de communication
mode non-connecté, l’arrivée des données + ordonnancement + non duplication ne sont pas garantis par le protocole; ==> à gérer par l’application.
l’approche non-connecté implique généralement une connexion synchrone;
le mode connecté implique une diminution des performances par rapport au mode non connecté: ceci est une contrainte pour certaines applications.
le mode connecté permet une implémentation asynchrone des échanges, plus complexe mais plus performantes que le mode non-connecté.
Conception Client
Une application cliente est moins complexe que son homologue serveur car:
la plupart des applications clientes ne gèrent pas d’intéractions avec plusieurs serveurs,
la plupart des applications clientes sont traitées comme un processus conventionnel; au contraire, un serveur nécessite des accès privilégiés de connexion au middleware.
la plupart des applications clientes ne nécessitent pas de protection supplémentaires, le système d’exploitation assurant les protections élémentaires suffisantes
Conception Serveur
Processus serveur:
Offre une connexion sur le réseau,
Entre indéfiniment dans un processus d’attente de requêtes clientes,
Lorsqu’une requête arrive, le serveur déclenche les processus associés à cette requête, puis émet la ou les réponses vers le client.
Problème : gérer plusieurs client simultanément.
Les types de serveurs
serveurs itératifs: ne gérent qu’un seul client à la fois
serveurs paralléles : fonctionnent « en mode concurrent ».
les serveurs itératifs en mode non-connecté:
offrent une interface de communication sur le réseau en mode non-connecté,
indéfiniment : réceptionnent une requête client, formulent une réponse, et renvoient le message réponse vers le client selon le protocole applicatif défini.
les serveurs itératifs en mode connecté:
offrent une connexion sur le réseau en mode connecté,
(*) réceptionnent une connexion client,
offrent une nouvelle connexion sur le réseau,
répétitivement : réceptionnent une requête pour cette connexion, formulent une réponse, et renvoient le message réponse vers le client,
lorsque le traitement pour ce client est terminé -->(*).
les serveurs paralèlles en mode non-connecté:
offrent une interface de communication en mode non-connecté,
répétitivement : réceptionnent la requête client; offrent une nouvelle interface de communication sur le réseau, et créent un processus secondaire (PR. S.) chargé de traiter la requête courante.
(PR. S.) : formule une réponse à la requête client, et renvoient le message,
(PR. S.) : lorsque le traitement est terminé, libére la communication, Exit.
les serveurs concurrents en mode connecté:
offrent une connexion sur le réseau en mode connecté,
répétitivement : réceptionnent une connexion client, offrent une nouvelle connexion sur le réseau, créent un PR. S. chargé de traiter la connexion courante.
(PR. S.) : répétitivement : réceptionne une requête pour cette connexion, formule une réponse, et renvoit le message réponse vers le client selon le protocole applicatif défini,
(PR. S.) : lorsque le traitement est terminé (propre au protocole applicatif), libère la connexion, Exit.
Quel type de serveur utiliser ?
serveurs itératifs en mode non-connecté : services qui nécessitent très peu de traitement par requête (pas de concurrence). Exemple: serveur TIME
serveurs itératifs en mode connecté : services qui nécessitent très peu de traitement par requête mais requièrent un transport fiable de type TCP. Peu utilisé.
serveurs concurrents en mode non-connecté : pas utilisé sauf si :
temps de création d’un processus extrêmement faible (dépend du système d’exploitation hôte) par rapport au temps de traitement d’une requête,
les requêtes nécessitent des accès périphériques importants (dans ce cas, la solution itérative est, en effet, inacceptable).
serveurs concurrents en mode connecté : offre un transport fiable et est capable de gérer plusieurs requêtes de différents clients simultanément; implémentation:
multi instanciation de processus avec un processus primaire et des processus secondaires traitant les connexions clientes,
avec un seul processus gérant les multiples connexions par l’intermédiaire de requêtes asynchrones et primitive d’attente d’évènements multiples.
Les Socket
Les sockets : interface client/serveur utilisée à l’origine dans le monde UNIX et TCP/IP.
Etendue aujourd’hui du micro (Cf Winsock) au Mainframe.
fournit les primitives pour le support des communications reposant sur toute suite de protocoles; les protocoles TCP/IP sont à l’origine des développements.
Les applicativions cliente et serveur ne voient les couches de communication qu’à travers l’API socket (abstraction):
Elles permettent d’établir un lien de communication en mode connecté ou non-connecté sur un réseau,
Structurent une application
soit en mode client ,
soit en mode serveur,
Permettent d’échanger des données entre ces applications.
La primitive socket:
point d’encrage qui permet à l’application d’obtenir un lien de communication vers la suite de protocole qui servira d’échange,
définit le mode de communication utilisé (connecté ou non-connecté).
La primitive bind: permet de spécifier le point de terminaison local (essentiellement le port TCP/UDP dans l’environnement TCP/IP).
la primitive connect:
permet à un client d’établir une communication active avec un serveur,
le point de terminaison distant (adresse IP + port TCP/UDP dans l’environnement TCP/IP) est spécifié lors de cet appel.
la primitive listen :
permet à un serveur d’entrer dans un mode d’écoute de communication ,
dés lors le serveur est « connectable » par un client,
le processus est bloqué jusqu’à l’arrivée d’une communication entrante.
la primitive accept :
permet à un serveur de recevoir la communication entrante (client),
crée un nouveau socket et retourne le de******eur associé à l’application.
le serveur utilise ce de******eur pour gérer la communication entrante
le serveur utilise le de******eur de socket précédent pour traiter la prochaine communication à venir.
les primitives read et write:
Lorsque la communication est établie, client et serveur échangent des données afin d’obtenir (client) et transmettre (serveur) le service désiré.
En mode connecté, clients et serveurs utilisent read et write; en mode non-connecté, ils utilisent les primitives recvfrom et sendto.
la primitive close : termine la connexion et libère le socket associé.
En mode non-connecté:
le client n’établit pas de connexion avec le serveur mais émet un datagramme (sendto) vers le serveur.
Le serveur n’accepte pas de connexion, mais attend un datagramme d’un client par recvfrom qui transmet le datagramme à l’application ainsi que l’adresse client.
Les sockets en mode non-connecté peuvent utiliser la primitive connect pour associer un socket à une destination précise. ==> send peut être utilisée à la place de la sendto,
De même, si l’adresse de l’émetteur d’un datagramme n’intéresse pas un processus la primitive recv peut être utilisée à la place de la primitive recvfrom.



