1 / 21

Retour sur RMI

Retour sur RMI. Exemple. CLIENT Essifun. SERVEUR de Surnoms. oter. infrastructure. Protocole d’application ?. 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 ….

tiara
Download Presentation

Retour sur 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. Retour sur RMI

  2. Exemple CLIENT Essifun SERVEUR de Surnoms oter infrastructure Protocole d’application ?

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

  4. Exemple : annuaire des surnoms 1:Paul:bug ou ENR/nPaul/n/bug/n ou Objet Requête Seriablizable EssiFun SERVEUR de Surnoms enregistrer(« paul »,  «bug ») unmarshalling marshalling 0111000101000.. enregistrer(« paul », «bug ») = TRUE unmarshalling marshalling 101.. TRUE Différence entre un transport TCP et UDP pour le codage des données ?

  5. Que peut on automatiser ? 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

  6. Exemple : annuaire des surnomset RMI AnnuaireEssi listePersonnes enregistrer lister oter Enregistrer(AnneMarie,AM) lister()

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

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

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

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

  11. Lookup : où est objetDistant ? client registre Il est ici result stub Envoyez le stub Le voici stub squelette result = objetDistant.m() objet Distant serveur client Interaction Client Enregistreur RMIRegistry + ClassLoader

  12. Exemple : annuaire des surnoms ASN.1 et norme ISO Protocole := CHOICE { enregistrerReq [0] SEQUENCE{PrintableString nom, PrintableString surnom} enregistrerRep[1] BOOLEAN, listerReq [2] NULL, listerRep [3] SET OF Personnes, ….} XDR et RPC de SUN Programme surnoms { version { boolean enregistrer(nomSurnom) = 1; listePersonnes lister(void)=2 }= 1 } = 10000

  13. Générateurs de Stubs Spécifications des données XDR ASN1 Générateurs RPCGEN / MAVROS Fichiers générés Types de données C Lisp Java Librairie marshalling et unmarshalling squelettes du client et du serveur Types de données C

  14. Les points communs des approches distribuées Adressage : à tout serveur (objet ou programme) doit être affecté une référence unique Transport : pour établir une communication entre 2 nœuds et transmettre une requête Marshalling : transformation de la requête pour passer sur le réseau

  15. Points communs Protocol : transmission des requêtes entre exécutables Dispatching : gestion des threads Des services communs Services de nommage Interface repository .....

  16. Reste à approfondir

  17. Communication réseaux et Internet Couches de transport Différences entre UDP et TCP (Développement d’un serveur multicast Ack/NoAck pour gérer la perte des paquets UDP) D’autres protocoles (RTP/RTCP) (introduction du routage multicast ou du tunelling) principes du IP / protocole ICMP Service de nommage DNS Configuration services réseau, routage IP et DNS d’une machine .....

  18. Spécificités des Réseaux Locaux Introduction au Réseaux Locaux LANs Configuration carte réseau d’une machine, Développement d’un analyseur de trafic et standards IEEE 802 : IEEE 802.3 et Ethernet Configuration d’un Firewall : IPTables, Heureusement Jean Yves est là :-)

  19. Quelques interrogations ? Comment choisir le bon middleware (intergiciel) ? Il y en a de plus en plus Corba, RMI, DCOM, DSA + CCM, J2EE + Web Services, .net .... Savoir les comparer Identifier les points communs Interopérabilité : XML une solution suffisante ?

  20. Des Critères de Comparaisons Autour du concept objet ? Communication synchrone ou asynchrone ? Description via des interfaces ou des messages ? Communication directe ou indirecte ? Spécifique ou indépendant langage ? Possibilité de transformation de messages ou non ? Protocole de communication binaire ou textuelle ? Prise en compte de QoS ou non ? (transaction, sécurité ....)

  21. Comment faire interopérer les middlewares ? Aller vers un middleware standard ? (J2EE / Corba) Construire une couche au dessus des middlewares ? des familles de middlewares, des middlewares génériques (Jonathan, PolyOrb, ...) Avoir une approche architecturale ? des design patterns Faire interopérer des middlewares existants? M2M

More Related