Systèmes d Information Avancés (et répartis)



Documents pareils
Remote Method Invocation (RMI)

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

Intergiciel - concepts de base

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

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

Remote Method Invocation en Java (RMI)

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

RMI le langage Java XII-1 JMF

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

NFP111 Systèmes et Applications Réparties

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

JOnAS Day 5.1. Clustering

CORBA. (Common Request Broker Architecture)

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

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

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

Java Naming and Directory Interface

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

Programmation répartie RPC & RMI

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

Java - RMI Remote Method Invocation. Java - RMI

Conception de serveurs d'applications ouverts

2 Chapitre 1 Introduction

Le cadre des Web Services Partie 1 : Introduction

Environnements de Développement

JOnAS 5. Serveur d application d

Introduction à la plateforme J2EE

Mise en œuvre des serveurs d application

CORBA haute performance

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

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

Evaluation Idéopass Cahier d analyse technique

Remote Method Invocation Les classes implémentant Serializable

Introduction à CORBA

Applications des patrons de conception

Projet gestion d'objets dupliqués

Présentation de Java. Olivier de Pertat IT GROUP

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

Calcul Parallèle. Cours 5 - JAVA RMI

Introduction à la conception de systèmes d information

Création d une application JEE

Introduction aux intergiciels

Architecture applicative et Cartographie

Compte Rendu d intégration d application

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

Software Engineering and Middleware A Roadmap

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

Systèmes d'informations historique et mutations

Documentation de la plate forme JOnAS

EXA1415 : Annotations

Plan. Department of Informatics

10. Base de données et Web. OlivierCuré

Conception et Implémentation d un serveur d applications dans le cadre du projet EISMO

Java pour le Web. Cours Java - F. Michel

.NET remoting. Plan. Principes de.net Remoting

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

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

Urbanisation des Systèmes d'information

Technologie des applications client-serveur UE RSX 102. Support de cours Tome 1. Anas ABOU EL KALAM

Documentation de la plate forme JOnAS. Frederic Maistre

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

REQUEA. v PD 20 mars Mouvements d arrivée / départ de personnels Description produit

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

Étude et applications de l approche MDA pour des plates-formes de Services Web

Rapport de projet de fin d études

NSY102. Conception de logiciels Intranet Introduction

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

Manuel d implémentation des Web Services Sous Axis1 et Axis2/Tomcat/linux. Par Pr Bouabid EL OUAHIDI

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

Construction d Applications Réparties avec CORBA

Urbanisation des SI. Des composants technologiques disponibles. Urbanisation des Systèmes d'information Henry Boccon Gibod 1

Architectures n-tiers Intergiciels à objets et services web

J2EE. Java2 Enterprise Edition. Pierre Yves Gibello Mise à jour : 30 Septembre 2004

Vulgarisation Java EE Java EE, c est quoi?

L architecture des services Web

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

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

JavaServer Pages (JSP)

Oracle9i Application Server version 2

Programmation Orientée Objet

Intergiciels orientés composants.

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

Java c est quoi? Java pourquoi?

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

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

La carte à puce. Jean-Philippe Babau

EAI. De l intégration à l e-business. Novembre François Rivard consultant senior Tél :

Utiliser Java sans BlueJ

Modèle d Administration des Systèmes Distribués à Base de Composants.

Messagerie asynchrone et Services Web

Analyse des techniques et des standards pour l interopérabilité entre plateformes

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

Auto-évaluation Aperçu de l architecture Java EE

Nouvelles Plateformes Technologiques

Les Services Web. Jean-Pierre BORG EFORT

Java DataBaseConnectivity

Intégration de systèmes client - serveur Des approches client-serveur à l urbanisation Quelques transparents introductifs

Architecture Orientée Service, JSON et API REST

Java et les bases de données

Transcription:

Systèmes d Information Avancés (et répartis) Université Lyon 1 MIAGE L. Médini, mars 2005

Plan des cours Protocole HTTP et programmation serveur Architectures multi-composants réparties Principes Exemples (CORBA, RMI, RMI/IIOP, J2EE) Objets distribués (Javabeans, EJB) Web services (SOA, WSDL, SOAP, UDDI)? Projet?

Caractéristiques des architectures multi-composants réparties Architectures en couches Couche présentation Interface graphique Couche métier Logique métier Couche données Stockage Chaque couche peut représenter zéro, un ou plusieurs composants Chaque composant peut être

Aspects liés aux architectures multi-composants Gestion des ressources machines Gestion du cycle de vie des composants Instanciation/destruction d objets Gestion de leur persistance Gestion de «pools» de connections ou de threads Communication entre les couches Échange de données («transaction») Annulation («rollback») Présentation Métier Données

Spécificités des systèmes répartis Référencement des objets distants Connectivité entre les composants Limitation de la charge réseau Sécurisation des échanges Communication asynchrone («messages») Présentation Métier Données

Les différents types d architectures Standardisation des communications Certaines tâches sont identiques pour beaucoup d objets Tâches de programmation répétitives Proposition de solutions «clés en main» Possibilité de développer des solutions non standard Interface graphique Couche applicative Logique métier Couche services techniques Stockage

Les différents types d architectures Architectures client/serveur (deux tiers) Modèle serveur de BD Serveur (données) Clients (présentation + métier) Clients «lourds» Modèle serveur web Serveur (données + métier) Clients (présentation) Applications côté serveur peu fiables/performantes

Les différents types d architectures Architectures 3 tiers Séparation des trois couches Clients (présentation) Serveur d applications (métier) Serveur(s) de BD (données) Client Java Client.Net Systèmes existants (CICS, progiciels) Serveur d applications Client Web Serveur de BD

Les différents types d architectures Architectures distribuée (n tiers) Décomposition des trois couches précédentes en sous-couches Serveur(s) de données communiquant avec les serveurs d applications concernés (données) Serveurs d applications se répartissant la charge de travail ou les tâches à réaliser (métier) Clients (présentation) Exemples Répartition de la charge architectures type clusters Répartition des tâches architectures orientées composants ou orientées services

Les différents types d architectures Architectures distribuée (n tiers) Serveur d applications Systèmes existants (CICS, progiciels) Client Web Serveur Web Client Java Serveur de BD Client.Net Composant métier Composant métier Composant métier Serveur de BD

objets distribués Approche orientée objet Architectures distribuées 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 } objets distribués

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

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 Localisation transparente des objets Accès transparent aux objets Caractéristiques techniques Architecture client/serveur Objets distribués ou non Multi-plateforme

CORBA

Les architectures COS Naming Service CORBA Code programmeur Resolve Client Communication logique Bind 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 Langages/protocoles IDL : langage neutre de spécification d interfaces Représentation des interfaces (informations échangées) dans le même langage Traduction (projection) des interfaces dans différents langages (C, C++, SmallTalk, Ada95 et Cobol OO, Java, Eiffel et Common Lisp) Traduction effectuée à la compilation (statique) Utilise un compilateur IDL spécifique au langage utilisé pour produire Un stub/skeleton lié à un ORB Une description des interfaces des services Interface Chat { void SetMessage (in string auteur, in string texte);

CORBA Langages/protocoles IIOP : protocole de communication entre ORB Transmission des messages Implémentation de GIOP sur TCP Échange de message entre «ORB» 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 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 L'interface que voit le client est indépendante De l'endroit où l'objet est situé Du langage dans lequel l'objet est implémenté Un ORB contient Une interface IDL Un support au service de nommage COS Un support IIOP

CORBA Objets/librairies } Stub : proxy client s interfacent 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 avec un ORB

CORBA Exemple d utilisation Fichier Chat.idl : interface Chat { void setmessage (in string auteur, in string texte);} Compilation : idlj falltie Chat.idl 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 { 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[]){ } } Lancement Serveur de noms (machine m1) : tnameserv (depuis JDK 1.3) Serveur (machine m2) : java ChatServer ORBInitialHost m1 Client(machine m3) :

RMI Mêmes principes de base que CORBA Limité à Java (objets non hétérogènes) Plus de langage de spécification d interfaces Protocole de communication : JRMP RMI/IIOP Protocole de communication : IIOP Permet l interopérabilité entre RMI et CORBA

Les architectures JNDI RMI Code programmeur Resolve Client Communication logique Bind 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

Les architectures COS Naming Service RMI/IIOP 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 Exemple d utilisation Interface Java : package monchat; import java.rmi.*; public interface Chat extends Remote { public void setmessage (String auteur, String texte) throws RemoteException;} Serveurs de noms : rmiregistry (méthodes lookup() et bind()) Compilation : rmic monchat.chat Classe skeleton : 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[]){ } } Lancement Serveur de noms (machine m1) : rmiregistry Serveur (machine m2) : java -Djava.rmi.server.codebase=http://m1/ ChatServer Client(machine m3) : java -Djava.rmi.server.codebase=http://m1/

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

RMI/IIOP Exemple d utilisation (différences avec RMI) 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 Javax.rmi (servant, serveur, client) Javax.naming (serveur, client) Lancement Serveur de noms (machine m1) : tnameserv Serveur (machine m2) : java -Djava.rmi.server.codebase=http://m1/ ChatServer Client(machine m3) :

Infrastructures middleware : conclusion Géré : accès aux services transversaux Nommage (serveur de noms) 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

Infrastructures middleware : conclusion Principes fondamenaux 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 Interfaces Générées à la compilation (CORBA non-dii) Mise en place «lourde» pour le développeur

L architecture J2EE But : développement, déploiement et exécution des applications distribuées Mêmes principes de base que les infrastructures middleware Communication synchrone (RMI/IIOP) et asynchrone (JMS) entre objets distribués, serveurs de nom (JNDI), intégration d objets CORBA (JavaIDL) plus de nombreux services techniques supplémentaires Génération d objets transactionnels distribués (EJB), gestion du cycle de vie des objets, gestion des transactions (JTA et JTS), sécurité, accès aux BD (JDBC)

L architecture J2EE Service De nommage Service De sécutité Accès aux objets distants Client Web Serv let Container Web JSP JSP Accès aux systèmes existants Serveur d applications J2EE Systèmes existants (CICS, progiciels) Applet ou client autonome Service mail Bean Container EJB Bean Bean Service transactions Accès aux bases de données Communication asynchrone Serveur de BD

Références CORBA http://www.omg.org http://corba.developpez.com/cours/ http://corba.developpez.com/presentation.htm RMI et RMI/IIOP http://java.sun.com/products/jdk/rmi/ http://java.sun.com/j2se/1.4.2/docs/api/ 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/rmiiiop/space.html