La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Copies: 1
Des sockets à RMI. Pourquoi ? Maturation de la technologie orientée objet –ADA, Modula –Smalltalk, C++, Java Maturation des communications Client- Serveur.

Présentations similaires


Présentation au sujet: "Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation."— Transcription de la présentation:

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

2 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

3 Lhé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…..

4 Circulation de messages et machines hétérogènes Couche de services –Annuaires –Sécurité –Protocoles dapplications Couche de transport –TCP –UDP Infrastructure informatique de distribution

5 Exemple CLIENT Essifun SERVEUR de Surnoms oter infrastructure Avantages dun Protocole dapplication ?

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

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

8 Lhéritage de la programmation par objets Envoi de messages = appels de méthodes Encapsulation et Interface Héritage et Composition

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

10 Séparation entre interface et implémentation séparation de la définition et de limplémentation : encapsulation interface : partie visible de lobjet implémentation : partie privée inaccessible depuis dautres objets interface = contrat entre lobjet et le monde extérieur

11 Séparation entre interface et implémentation Assemblage des objets dépend uniquement des interfaces, le changement local dun objet ne perturbe pas lensemble de lapplication. Importance de la nomenclature des objets substitution logique liée à la substitution physique

12 Représentation et Types de données Définition de nouveaux types Choix dun 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

13 Mécanismes dabstraction 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

14 Classes et héritage Mécanisme dabstraction + Généralisation Surcharge des méthodes par héritage

15 Classe et Composition CARROSSERIE MOTEUR VEHICULE

16 Que peut on automatiser ? A partir du protocole dapplications 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

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

18 Client/server socket interaction: UDP close clientSocket Serveur read reply from clientSocket 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 write reply to serverSocket specifying client host address, port umber Client

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

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

21 Circulation de messages et machines hétérogènes Couche de services Objets de lapplication qui résultent de la conception du modèle Couche de transport Responsable de ladministration des objets et de lacheminement des messages Infrastructure informatique de distribution

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

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

24 Infrastructure Objets Distribués ClientClient ServeurServeur Objet1 Objet2Objet3

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

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

27 RMI Classes et Interfaces ClasseLocale SoucheSquelette ClasseDistante InterfaceDistante Remote Appel méthode m() Machine localeMachine distante InterfaceDistante

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

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

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

31 Rôle de linfrastructure administre les implémentations, la création et la destruction dobjets 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 larrêt dun serveur doit gérer la persistance

32 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

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

34 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,...

35 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);

36 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)

37 Invocation statique Le nom de lobjet destinataire et le message sont connus au moment du développement Ne permet ni lajout ni le retrait dobjets dans les serveurs

38 Invocation dynamique Permet au programme client de –découvrir les objets à lexé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

39 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 linterface –changements qui naffectent pas les clients


Télécharger ppt "Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation."

Présentations similaires


Annonces Google