Middlewares de communication entre objets distribués

Documents pareils
Remote Method Invocation (RMI)

Remote Method Invocation en Java (RMI)

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Intergiciel - concepts de base

RMI le langage Java XII-1 JMF

JOnAS Day 5.1. Clustering

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

Le cadre des Web Services Partie 1 : Introduction

CORBA. (Common Request Broker Architecture)

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

NFP111 Systèmes et Applications Réparties

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Java - RMI Remote Method Invocation. Java - RMI

Composants Logiciels. Le modèle de composant de CORBA. Plan

Programmation répartie RPC & RMI

Java Naming and Directory Interface

Etude critique de mécanismes de sécurité pour l architecture Jini

Programmation répartie: Objet distribué. CORBA (Common Object Request Broker Architectur)

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

Programmation réseau avec Java. 3/7 RMI, un peu de sécurité et CORBA

Conception de serveurs d'applications ouverts

JOnAS 5. Serveur d application d

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Software Engineering and Middleware A Roadmap

Remote Method Invocation Les classes implémentant Serializable

Plan. Department of Informatics

CORBA haute performance

Calcul Parallèle. Cours 5 - JAVA RMI

OS Réseaux et Programmation Système - C5

Architecture distribuée

EXA1415 : Annotations

Projet gestion d'objets dupliqués

Introduction à la plateforme J2EE

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Création d une application JEE

Patrons de Conception (Design Patterns)

Environnements de Développement

Introduction à CORBA

Développement, déploiement et sécurisation d'applications JEE

2 Chapitre 1 Introduction

Programmation Orientée Objet

Cedric Dumoulin (C) The Java EE 7 Tutorial

Compte Rendu d intégration d application

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Messagerie asynchrone et Services Web

GEI 465 : Systèmes répartis

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Mise en œuvre des serveurs d application

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Rapport de projet de fin d études

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

OpenPaaS Le réseau social d'entreprise

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Applications des patrons de conception

La base de données XML exist. A. Belaïd

Dis papa, c est quoi un bus logiciel réparti?

Modèle client-serveur Plan. Modèle client-serveur. Modèle client-serveur définition. Modèle client-serveur communication par messages.

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft

Vulgarisation Java EE Java EE, c est quoi?

Introduction aux «Services Web»

Implementing a simple RMI Application over the Internet (using and comparing HTTP tunneling, RMI Proxy)

Architectures n-tiers Intergiciels à objets et services web

Contribution à l allocation dynamique de ressources pour les composants expressifs dans les systèmes répartis

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Un environnement de déploiement automatique pour les applications à base de composants

Auto-évaluation Programmation en Java

Architecture applicative et Cartographie

Java DataBaseConnectivity

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Le modèle client-serveur

Introduction aux intergiciels

Evaluation Idéopass Cahier d analyse technique

Systèmes d'informations historique et mutations

MEAD : temps réel et tolérance aux pannes pour CORBA

18 TCP Les protocoles de domaines d applications

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Présentation de Java. Olivier de Pertat IT GROUP

Intergiciels orientés composants.

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Chapitre I Notions de base et outils de travail

TP1 : Initiation à Java et Eclipse

Système de Virtualisation pour une application de gestion commerciale d entreprise

DEMARREZ RAPIDEMENT VOTRE EVALUATION

J2EE - Introduction. Développement web - Java. Plan du chapitre

Premiers Pas en Programmation Objet : les Classes et les Objets

Intégration d'applications à "gros grain" Unité d'intégration : le "service" (interface + contrat)

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Urbanisation des SI Conduite du changement IT 20/03/09. Patrick CHAMBET

Meta Object Facility. Plan

Environnements de développement (intégrés)

NSY102. Conception de logiciels Intranet Introduction

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Solutions de gestion de la sécurité Livre blanc

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

Conception et réalisation d un système d instrumentation distribuée basé sur l architecture Jini

Objets et Programmation. origine des langages orientés-objet

F. Barthélemy. 17 mai 2005

Construction d Applications Réparties avec CORBA

Transcription:

Master 2 Traitement de l Information Middlewares de communication entre objets distribués Conception d Applications Hétérogènes Distribuées Lionel Médini Septembre-novembre 2015

du cours Outils de programmation avancés Systèmes d information distribués Appel de méthodes distantes (RPC) ( CORBA ) Objets hétérogènes distribués ( RMI/IIOP Objets Java distribués (RMI, Synthèse Frameworks Java (Struts, Spring, JEE 5) Objets transactionnels distribués Exemples d EJB 2 et de descripteurs de déploiement EJB 3 : POJO et annotations

Objets distribués Approche orientée objet Architectures distribuées Objets distribués Exemples d application : agence de voyage en ligne Exemples d objets distribués Logique applicative client (connexion, recherche ( commandes Gestion sécurisée des paiements Gestion des réservations Interrogation des fournisseurs de voyages }

Infrastructures middleware But : gestion des communications entre les objets hétérogènes via le réseau dans les architectures distribuées Exemples RPC (Sun, Microsoft...) ( OMG ) CORBA ( Java ) RMI ( Java ) RMI/IIOP ( Java ) Java EE ( Microsoft ).Net

RPC Origine Créé pour le système de fichiers NFS Version «originale» : Sun RPC (libre) Dernière RFC : 1057, juin 1988 Principe Appel de fonctions distantes Fonctionne sur un mode client-serveur Langages de programmation hétérogènes Transparence des appels distants pour les composants locaux

RPC Fonctionnement - Des composants locaux (stub et skeleton) masquent la couche réseau au client et au serveur Client Serveur Stub Skeleton Appel de procédure via une Couche communication (réseau)

RPC Fonctionnement - Au niveau logique, les prototypes des fonctions et types de données exposés sont décrits dans un langage commun (IDL) Client Serveur Stub IDL Skeleton

RPC Langages/notions de base Stub/skeleton Proxys de gestion des communications entre objets Stub : proxy côté client reçoit et achemine les requêtes du client récupère les réponses et les transmet au client Skeleton : proxy côté serveur Récupère les requêtes et les transmet au serveur reçoit et achemine les réponses du serveur Spécifiques aux langages, couches de communication, types d objets

RPC Langages/notions de base IDL : langage neutre de spécification d interfaces Langage commun de représentation des interfaces Typage des données en XDR (external Data Representation : dernière RFC : 4506) Traduction (projection) des interfaces dans différents langages C, C++, SmallTalk, Cobol OO, Java, Common Lisp Compilateur spécifique à chaque langage

RPC Limité à l appel de méthodes (pas d objet) Introduit les principes fondamentaux d indirection dans l accès aux ressources distantes de serveur d application Remarques Plusieurs versions, incompatibles entre elles Implémentation sur HTTP : XML-RPC Références http://www.ietf.org/rfc/rfc1057.txt http://www.crevola.org/francois/?content=articles& show=1

CORBA But Communication entre objets hétérogènes et distants Invocation de «services» entre objets d applications distribuées Principes généraux Séparation stricte Implémentation/Interface Transparence par rapport à À la localisation des objets Au langage d implémentation Architecture client/serveur

CORBA

CORBA COS Naming Service Resolve Bind Code programmeur Client Communication logique Servant Code généré par le compilateur IDL Stub Skeleton Librairies fournies ORB IIOP ORB Système d exploitation TCP Communication réseau TCP

CORBA Objets/librairies ORB : Couche «communication» intégrée aux objets Responsable des mécanismes nécessaires pour Trouver l'implémentation de l'objet pour la requête Préparer cette implémentation à recevoir la requête Communiquer les données constituant la requête Un ORB contient Une interface IDL Un support au service de nommage COS Un support IIOP

CORBA Objets/librairies Stub : proxy client Skeleton : proxy serveur CORBA COS : services objets communs Naming Service : service de nommage permettant de retrouver les objets servants pour les clients Life Cycle Service Object Transaction Service Security Service } s interfacent avec un ORB

CORBA Langages/protocoles IDL (suite) : langage neutre de spécification d interfaces Décrit l interface d un servant Génération ( statique ) Effectuée à la compilation À l aide d un compilateur IDL spécifique à chaque langage

CORBA Langages/protocoles IIOP : protocole de communication entre ORB Transmission des messages Implémentation de GIOP sur TCP Échange de messages entre «ORB»

CORBA Langages/protocoles DII : accès dynamique aux serveurs Permet de «court-circuiter» un ORB Découverte dynamique de nouveaux objets Construction et distribution d invocation Réception de réponses

CORBA Exemple d utilisation Fichier Chat.idl interface Chat { void setmessage (in string auteur, in string texte); } Compilation idlj falltie Chat.idl

CORBA Exemple d utilisation (Java) Interface que doit implémenter le servant public interface ChatOperations { void setmessage (String auteur, String texte); } Interface distante que doit implémenter le servant public interface Chat extends ChatOperations, org.omg.corba.object, org.omg.corba.portable.idlentity {...}

CORBA Exemple d utilisation (Java) Éléments générés par le compilateur Classe skeleton Chat_Tie Classe stub ChatStub Classe contenant des méthodes auxiliaires : ChatHelper

CORBA Exemple d utilisation À Programmer class ChatServant implements ChatOperations { void setmessages (String auteur, String texte){ } } class ChatServer { public static void main (String args[]){ } } class ChatClient { public static void main (String args[]){ } }

CORBA Exemple d utilisation Lancement Serveur de noms (machine m1) ( 1.3 tnameserv (depuis JDK Serveur (machine m2) java ChatServer ORBInitialHost m1 Client(machine m3) java ChatClient ORBInitialHost m1

RMI Mêmes principes de base que CORBA ( hétérogènes Limité à Java (objets non Plus de langage de spécification d interfaces Protocole de communication : JRMP

RMI JNDI Lookup Resolve Bind Code programmeur Client Communication logique Servant Code généré par le compilateur RMI Stub Skeleton Librairies fournies RMI JRMP RMI Système d exploitation TCP Communication réseau TCP

RMI Exemple d utilisation Interface Java package monchat; import java.rmi.*; public interface Chat extends Remote { public void setmessage (String auteur, String texte) throws RemoteException;} Classe skeleton (supprimée depuis Java 1.5) ChatServant_Skel Classe stub ChatServant_Stub

RMI Exemple d utilisation À Programmer class ChatServant extends UnicastRemoteObject implements Chat { void setmessages (String auteur, String texte){ } } class ChatServer { public static void main (String args[]){ } } class ChatClient { public static void main (String args[]){ } } Compilation rmic monchat.chat

RMI Exemple d utilisation Serveur de noms (() bind rmiregistry (méthodes lookup() et Lancement Serveur de noms (machine m1) rmiregistry Serveur (machine m2) java - Djava.rmi.server.codebase=file:C:/Users/toto/RMI/src/serveu r/ -Djava.rmi.server.hostname=192.168.1.38 - Djava.security.policy=server.policy serveur.serveur Client(machine m3) java - Djava.rmi.server.codebase=file:/C:/Users/toto/RMI/src/clien t/ -Djava.security.policy=client.policy client.client 192.168.1.38

RMI/IIOP Protocole de communication : IIOP COS Naming Service Permet l interopérabilité RMI / CORBA Code programmeur Resolve Client Communication logique Bind Servant Code généré par le compilateur RMI avec option iiop Stub Skeleton Librairies fournies RMI IIOP RMI Système d exploitation TCP Communication réseau TCP

RMI/IIOP ( RMI Exemple d utilisation (différences avec Implémentation du servant class ChatServant extends PortableRemoteObject implements Chat { void setmessages (String auteur, String texte){ } } Transtypage complexe Compilation : rmic iiop monchat.chat Packages à importer ( client Javax.rmi (servant, serveur, ( client Javax.naming (serveur,

RMI/IIOP Exemple d utilisation (différences avec RMI) Lancement Serveur de noms (machine m1) tnameserv Serveur (machine m2) : java -Djava.rmi.server.codebase=http://m1/ ChatServer Client(machine m3) : java -Djava.rmi.server.codebase=http://m1/ ChatClient

CORBA + RMI/IIOP COS Naming Service JNDI lookup bind resolve JNDI bind Client CORBA Servant RMI Stub Client RMI Servant CORBA Skeleton ORB Stub Skeleton RMI RMI ORB Réseau sur IIOP

RMI : évolutions Dynamic classloading Le serveur n enregistre plus le stub, mais l interface de l objet et l URL permettant de télécharger le stub et le skeleton Le ClassLoader se charge de déployer les instances en fonction de l URL au moment de la requête (lazy / just-in-time deployment) Suppression des skeletons (V 1.2) Le stub du client possède suffisamment d information pour contacter l objet servant directement Ajout du code manquant (Reflection) pour réaliser ce travail dans le stub Dynamic proxies Génération dynamique (Reflection) de proxies implémentant les interfaces du serveur Remplacement des stubs par des proxies dynamiques (V 1.5)...

RMI : conclusion RMI has been remarkably stable for a long time. Changes have been slow and incremental. But each change has been towards simplifying development and deployment, without any accompanying sacrifices. It's still a strongly typed system, it still preserves as much of the localprocess call syntax and semantics as is reasonable, and it still is entirely Java. But, over time, it's also gotten more agile. Slowly and subtly, RMI has evolved into a low-process, low-deploymentoverhead, and lightweight framework for strongly typed remote method invocation. It's become as good for very dynamic environments as any of the more loosely coupled frameworks without sacrificing any of its original strengths. Source : https://today.java.net/pub/a/today/2004/06/01/rmi.html

Principes fondamentaux Objets client, servant et serveur Invocation d objets distants transparente pour le client Échange de messages conformes à des descriptions d interfaces Service de nommage Limites Requiert la programmation du serveur Requiert l inscription dans le serveur de noms ( non-dii Interfaces Générées à la compilation (CORBA Mise en place «lourde» pour le développeur

Géré : accès aux services transversaux ( noms Nommage (serveur de Transactions Persistance Sécurité Non géré : optimisation des accès aux ressources Pools de connexion ou de threads Activation et désactivation des objets Répartition de la charge Tolérance aux pannes

Références CORBA http://www.omg.org http://corba.developpez.com/cours/ http://corba.developpez.com/presentation.htm RMI http://docs.oracle.com/javase/8/docs/platform/rmi/spec/rmitoc.ht ml https://today.java.net/pub/a/today/2004/06/01/rmi.html RMI/IIOP http://docs.oracle.com/javase/7/docs/technotes/guides/rmi-iiop/ Exemples de code RMI et RMI/IIOP http://java.sun.com/developer/codesamples/index.html http://thomasfly.com/rmi/rmi_tutorial.html http://www-128.ibm.com/developerworks/java/rmi-iiop/space.html