1 / 39

Des sockets à RMI

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)

isaiah
Download Presentation

Des sockets à RMI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 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…..

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

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

  6. Communication client serveur 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

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

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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

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

  15. Classe et Composition VEHICULE CARROSSERIE MOTEUR

  16. 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

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

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

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

  20. 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)

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

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

  23. 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

  24. Infrastructure Objets Distribués Objet2 Objet3 Objet1 Client Client Serveur Serveur

  25. Générateurs 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…)

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

  27. RMIClasses et Interfaces Remote Machine locale Machine distante InterfaceDistante InterfaceDistante Souche Squelette Appel méthode m() Appel méthode m() ClasseLocale ClasseDistante

  28. 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

  29. 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

  30. 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

  31. 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

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

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

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

  38. 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

  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 l’interface • changements qui n’affectent pas les clients

More Related