Des sockets à RMI Programmation réseau versus programmation objet

Slides:



Advertisements
Présentations similaires
Introduction aux environnements répartis
Advertisements

Objets Distribués et Composants
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Harmonisation AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Retour sur RMI.
1 Plan de lenseignement Cours Introduction au réseau via les objets distants (Application à RMI) Ce que cache RMI : programmation socket – mode connecté
ORB (1/2) ORB : Object Request Broker
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Communication par diffusion : Multicast
Objets Distribués Chronique dune invasion annoncée Pourquoi? Comment? Qui : Corba / COM-DCOM / Java RMI...
Applications distribuées et parallèlisme La communication ne doit pas rester bloquée pour un client.
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Architecture CORBA réseau Objet Corba Application Serveur
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Objets Distribués Chronique d ’une invasion annoncée
Des sockets à RMI. Pourquoi ? Maturation de la technologie orientée objet –ADA, Modula –Smalltalk, C++, Java Maturation des communications Client- Serveur.
Des sockets à RMI.
À travailler seuls Département SI AM Dery Concepts généraux
À travailler seuls Département SI AM Dery Concepts généraux
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Des sockets à RMI. Pourquoi ? Maturation de la technologie orientée objet –ADA, Modula –Smalltalk, C++, Java Maturation des communications Client- Serveur.
Introduction aux applications réparties
Object Management Architecture (OMA)
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
Programmation Objet en JAVA Cours 9 : Réseau R. M

Etude des Technologies du Web services
Programmation orientée objet
Java Remote Method Invocation (RMI)
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
CAT 2000 LES MIDDLEWARES Présenté par : Tagmouti Siham Smires Ali
.Net Remoting.
Interopérabilité JOnAS - CORBA
Objets Distribués Chronique d’une invasion annoncée Pourquoi? Comment?
PROJET DE GENIE LOGICIEL 2005
Le Modele OSI.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Présentation de CORBA et de IIOP
CENTRALISATION DES CANDIDATS LOCATAIRES
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Développement d’application client/serveur
Communication entre processus From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
Structures de données avancées : Concepts réseaux et protocole de communication. D. E ZEGOUR Institut National d ’Informatique.
Créer des packages.
Systèmes distribués Plusieurs technologies existent : Les sockets
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Le web service
Mastère Professionnel Systèmes de Communication et Réseaux
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Les sockets.
Module 3 : Création d'un domaine Windows 2000
Les RPC remote procedure call
Couche transport du modèle OSI
La programmation par objets Principes et concepts Etude de Smalltalk.
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Notifications et Communication réseau D. BELLEBIA – 18/12/2007NSY208 CNAM.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Programmation Réseaux Qu’avez-vous retenu ? Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Les bases du protocole Modbus
Architecture Client/Serveur
L. Gurret – M. Herve – P. Mignon – J. Prarioz. Introduction  Dernière étape d’analyse  Cahier des charges, spécifications et conception orientée objet.
Remote Method Invocation
Java Remote Method Invocation
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Applications distribuées Introduction Jean-Jacques LE COZ.
Transcription de la présentation:

Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation

Pourquoi ? Maturation de la technologie orientée objet ADA, Modula Smalltalk , C++, Java Maturation des communications Client-Serveur sockets RPC (Remote Procedure Call) couches OSI

L’héritage de la programmation Client Serveur Importance du marshalling Automatisation dans le cas des Appels de procédures à distance Des serveurs accessibles simultanément par plusieurs clients Enregistrement des serveurs dans des annuaires de noms Communication connectée ou par message…..

Circulation de messages et machines hétérogènes Infrastructure informatique de distribution Couche de transport TCP UDP Couche de services Annuaires Sécurité Protocoles d’applications

Exemple CLIENT Essifun SERVEUR de Surnoms oter infrastructure Avantages d’un Protocole d’application ?

Communication client serveur Connexion au serveur Attente de requêtes Préparation de la requête Envoi de la requête Attente du résultat …. Analyse du résultat reçu Analyse de la requête ….. Exécution …. Préparation de la réponse Envoi de la réponse

Exemple : annuaire des surnoms 1:Paul:bug ou ENR/nPaul/n/bug/n …ou Objet Requête/Reponse Seriablizable EssiFun SERVEUR de Surnoms enregistrer(« paul »,  «bug ») 1:Paul:bug ou ENR/nPaul/n/bug/n ou Objet Requête Seriablizable unmarshalling marshalling 0111000101000.. enregistrer(« paul »,  «bug ») = TRUE unmarshalling marshalling 101.. TRUE 1:TRUE ou Objet Réponse Seriablizable Les couches de transport gèrent l’encodage final des données

L’héritage de la programmation par objets Envoi de messages = appels de méthodes Encapsulation et Interface Héritage et Composition

Objets = briques logicielles Assembler des briques élémentaires Réduire la complexité des systèmes d’information Séparation entre interface et implémentation Représentation et types de données Mécanismes d’abstraction

Séparation entre interface et implémentation séparation de la définition et de l’implémentation : encapsulation interface : partie visible de l’objet implémentation : partie privée inaccessible depuis d’autres objets interface = contrat entre l’objet et le monde extérieur

Séparation entre interface et implémentation Assemblage des objets dépend uniquement des interfaces, le changement local d’un objet ne perturbe pas l’ensemble de l’application. Importance de la nomenclature des objets substitution logique liée à la substitution physique

Représentation et Types de données Définition de nouveaux types Choix d’un type pour une donnée (ex. montant) devient une contrainte sur la conception. Types de données Abstraits considérés comme des types de base

Mécanismes d’abstraction Abstraction des données : essence du procédé de construction de systèmes d ’information à base d ’objets distribués par Classe et/ou Composition Des mises en œuvre différentes selon les cas

Classes et héritage Mécanisme d’abstraction + Généralisation Surcharge des méthodes par héritage

Classe et Composition VEHICULE CARROSSERIE MOTEUR

Que peut on automatiser ? A partir du protocole d’applications Au minimum, la phase de marshalling/unmarshalling (hétérogéneité des langages, des systèmes, etc) Selon les cas, le squelette du serveur les appels distants du client

Interaction Client/server : socket TCP wait for incoming connection request connectionSocket = welcomeSocket.accept() create socket, port=x, for incoming request: welcomeSocket = ServerSocket() connect to hostid, port=x clientSocket = Socket() close connectionSocket read reply from clientSocket send request using read request from write reply to TCP connection setup Serveur (s’exécutant sur l’hôte) Client

Client/server socket interaction: UDP create socket, clientSocket = DatagramSocket() Create, address (hostid, port=x, send datagram request using clientSocket create socket, port=x, for incoming request: serverSocket = DatagramSocket() read request from serverSocket close clientSocket read reply from clientSocket write reply to serverSocket specifying client host address, port umber Serveur Client

Exemple : annuaire des surnoms boolean enregistrer(Personne p, Surnom sn) ListOfPersonne lister() boolean oter(Surnom surnom) AnnuaireEssi listePersonnes Enregistrer(AnneMarie,AM) lister() Serveur Client

Exemple : annuaire des surnoms interface : partie visible de l’objet (enregistrer, oter, lister, …) = méthodes publiques Java implémentation : partie privée inaccessible depuis d’autres objets (listePersonnes : un vecteur de Personne ou un tableau ou ….) Interface distante = contrat entre l’objet et le monde extérieur (save impossible par exemple)

Circulation de messages et machines hétérogènes Infrastructure informatique de distribution Couche de transport Responsable de l’administration des objets et de l’acheminement des messages Couche de services Objets de l’application qui résultent de la conception du modèle

Infrastructure ? CLIENT SERVEUR Service (marshalling..) transaction sécurité nommage Service (marshalling..) Transport TCP IP...

Objets distribués Un programme (objet) peut être à la fois client de certains serveurs et serveur d’autres clients Il peut y avoir reconfiguration dynamique des rôles Client Serveur

Infrastructure Objets Distribués Client Client Serveur Serveur

Générateurs Stubs Skeletons Proxy Spécifications des données Int. Java IDL Générateurs RMIC / Orbix... Fichiers générés Stubs Skeletons Proxy (mise en œuvre de la sérialisation et désérialisation…)

RMI public interface Surnoms extends java.rmi.Remote { public Boolean enregistrer(String nom, String surnom) throws java.rmi.RemoteException, ServeurSurnoms.surnoms.ExisteDeja ; …. }

RMI Classes et Interfaces Remote Machine locale Machine distante InterfaceDistante InterfaceDistante Souche Squelette Appel méthode m() Appel méthode m() ClasseLocale ClasseDistante

Comment activer des objets distribués ? Messages échangés entre objets = Requêtes ou Résultats Certains envois de messages n’attendent pas de résultats Requête = Destinataire + nom de méthode + Paramètres Résultat = Donnée ou indication d’une erreur ou d’une défaillance

Comment activer des objets distribués ? Mécanisme d’exécution ou de transport définit comment les messages sont véhiculés de l’objet client vers l’objet serveur (destinataire) retrouver et activer les objets adéquats Un objet client a deux manières d’envoyer des messages invocation statique invocation dynamique

Rôle du client Invoquer les services dont il a besoin par envoi de requêtes Accès à l’objet destinataire par une référence à son implémentation par l’interface ID Unités autonomes - solidité - robustesse - adaptation

Rôle de l’infrastructure administre les implémentations, la création et la destruction d’objets réceptionne les requêtes, localise le serveur, vérifie son état et celui du destinataire active au besoin le serveur, lui envoie les données de la requête ramène les résultats au client doit être informée de l’arrêt d’un serveur doit gérer la persistance

Rôle du serveur Administrer un flot de requêtes pour un ou plusieurs objets dont il a la responsabilité Ordonnancer la séquence des opérations de réponses à une requête

Rôle du serveur d’objets active si besoin l’objet destinataire recherche et exécute la méthode passe le résultat à l’infrastructure plusieurs requêtes peuvent arriver simultanément arrêt du serveur : désactiver tous les objets et enregistrer leur état

Scénario d ’obtention de la référence du service de nommage Client ou Serveur ORB CosNaming:: NamingContext resolve_initial_references ("NameService"); conversion ajout,retrait,lecture,...

Enregistrer un objet Opération pour publier un Objet en général, opération réalisée par le serveur Scénario Type 1. Créer un objet 2. Construire un chemin d ’accès (Name) 3. Appeler l ’opération « bind » ou « rebind » avec le chemin et la référence de l ’objet void bind (in Name n, in Object obj) raises (NotFound, CannotProceed, InvalidName, AlreadyBound);

Retrouver un objet Opération réalisée par un client ou un serveur Scénario type : construire un chemin d ’accès (Name) appeler l ’opération « resolve » avec le chemin convertir la référence obtenue dans le bon type Object resolve (in Name n) raises (NotFound, CannotProceed, InvalidName)

Invocation statique Le nom de l’objet destinataire et le message sont connus au moment du développement Ne permet ni l’ajout ni le retrait d’objets dans les serveurs

Invocation dynamique Permet au programme client de découvrir les objets à l’exécution et les interfaces proposés par ces objets construire dynamiquement messages et requêtes envoyer et recevoir le résultat de telles requêtes Rend les systèmes réactifs et faciles à modifier

Invocation dynamique + surcharge flexibilité du code briques logicielles avec les mêmes messages pour des objets de différentes natures définir de nouveaux objets sans modifier l’interface changements qui n’affectent pas les clients