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

Stéphane Frenot - Département Télécommunication - SID - II - Corba 120 CORBA.

Présentations similaires


Présentation au sujet: "Stéphane Frenot - Département Télécommunication - SID - II - Corba 120 CORBA."— Transcription de la présentation:

1 Stéphane Frenot - Département Télécommunication - SID - II - Corba 120 CORBA

2 Stéphane Frenot - Département Télécommunication - SID - II - Corba 121 Objectifs des approches distribuées Vue macroscopique Développer des applications dont les services sont répartis sur plusieurs machines interconnectées par un réseau Contraintes –Développement similaire à une approche centralisée Moyens : masquer les "détails" –"Détails" du réseau => On ne connaît pas la localisation –"Détails" des langages utilisés => On ne connaît pas l'implantation

3 Stéphane Frenot - Département Télécommunication - SID - II - Corba 122 Quelques architectures OSF (Open Software Foundation) –Distributed Computing Environnement Microsoft –Distributed Component Object Model OMG (Object Management Group) –Common Object Request Broker Architecture (CORBA) Sun –EJB (Enterprise Java Beans)

4 Stéphane Frenot - Département Télécommunication - SID - II - Corba 123 CORBA Fondé sur le modèle client/serveur s'échangeant des valeurs Une architecture –OMA : Object Management Architecture Un langage de description des services offerts –IDL : Interface Definition Language Un modèle d'échange d'informations –Valeurs atomiques, Valeurs Contruites et Références d'objet Mais surtout une spécification papier de l'ORB et des services

5 Stéphane Frenot - Département Télécommunication - SID - II - Corba 124 Objet client Objet serveur Etat ? Service ? Problématique Vue microscopique Service ==> appel des méthodes Etat ==> accès aux attributs Espace 1 Espace 2

6 Stéphane Frenot - Département Télécommunication - SID - II - Corba 125 Principe des échanges Fournir des objets de service qui vont servir d'intermédiaires pour le client et le serveur Objet client Objet serveur Espace 1 Espace 2 Echange neutre Appel spécifique

7 Stéphane Frenot - Département Télécommunication - SID - II - Corba 126 Client Système Intermédiaire Client Serveur Fonctionnement Espace 1 Espace 2 Système Intermédiaire Serveur Mandataire serveur (skeleton) Mandataire client (stub)

8 Stéphane Frenot - Département Télécommunication - SID - II - Corba 127 ORB Serveur Client ORB Client Demande de service Référentiel des Services Recherche du service Lanceur Appel du lanceur Lancement du mandataire Mandataire serveur Mandataire client Fonctionnement lancement Espace 1 Espace 2 Serveur Instanciation du serveur le service est prêt le mandataire est prêt Le client peut invoquer les méthodes du service

9 Stéphane Frenot - Département Télécommunication - SID - II - Corba 128 Développement 1) Définition de l'interface IDL du composant (objet serveur) –mandataires client (client stubs) –mandataires serveurs (serveur skeleton) 2) Développement du serveur qui implante les services 3) Développement d'un lanceur capable d'instancier le serveur et de le rendre disponible sur le bus corba (création du skeleton) 4) Inscription du lanceur sur le bus(ajout dans le référentiel) ) Insertion dans le client des appels au serveur (connexion sur le serveur via le stub et invocation des méthodes distantes)

10 Stéphane Frenot - Département Télécommunication - SID - II - Corba 129 Un exemple Un composant Requête sur une base de données –Le composant maintient une connexion sur une base –Il contient une méthode d'invocation Chaine [] executerRequete (Chaine commandeSQL);

11 Stéphane Frenot - Département Télécommunication - SID - II - Corba 130 OMG-IDL : Définition Langage de spécification des interfaces –Orienté Objet –Opérations et Attributs –Héritage simple et multiple –Exceptions Conçu pour être mappé sur de nombreux langages de programmation –Java, C, C++, Smalltalk, Ada, Cobol, Modula3 OMG-IDL «Interfaces» Java, «Classes Abstraites» du C++

12 Stéphane Frenot - Département Télécommunication - SID - II - Corba IDL typedef sequence tableaux_resultat; interface REQUETE { tableaux_resultat executer_req_array(in string req); }; --> Compilation : idl -jPacces_bd requete.idl (sous OrbixWeb) Mandataire client : REQUETE.java Service client pour demander un proxy : REQUETEHelper.java Mandataire serveur : _tie_REQUETE.java Interface de développement du serveur : _REQUETEOperations

13 Stéphane Frenot - Département Télécommunication - SID - II - Corba 132 Développement du serveur Garantit que toutes les fonctions sont implantées N'importe quel langage sur lequel est défini un mapping Implante REQUETE_Operations package acces_bd; public interface _REQUETEOperations { public String[] executer_req_array(String req); }

14 Stéphane Frenot - Département Télécommunication - SID - II - Corba Développement du serveur package acces_bd; import java.sql.*; import java.util.Vector; class REQUETEImplementation implements _REQUETEOperations { Connection con=null; public REQUETEImplementation() { try { DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver ()); } catch (Exception raison1) { System.out.println("pb pendant new oracle.jdbc.driver....."); } try { con = DriverManager.getConnection lyon.fr:1526:INSA", "bcb", "bcb"); } catch (Exception raison2) { System.out.println("pb pendant get connection jdbc....."); }

15 Stéphane Frenot - Département Télécommunication - SID - II - Corba Développement du serveur public String[] executer_req_array(String req){ String resultat[]; Vector resultvector=new Vector(); Statement stmt=null; ResultSet rs=null; int ncols=0; try { // Lancement de la requête stmt = con.createStatement(); rs = stmt.executeQuery(req); ncols= rs.getMetaData().getColumnCount(); }catch (Exception ex) {//code d'erreur} try { while (rs.next) { for (int i=1; i<=ncols; i++) resultvector.addElement(rs.getString(i));} }catch (Exception ex) { } resultat =new String[resultvector.size()]; resultvector.copyInto(resultat); return resultat;}

16 Stéphane Frenot - Département Télécommunication - SID - II - Corba 135 Développement du lanceur (adapteur d'objet ) Enregistre les classes dimplantation des serveurs Active / désactive les serveurs Génération / interprétation des références sur les objets Plusieurs types en fonction de la nature du serveur

17 Stéphane Frenot - Département Télécommunication - SID - II - Corba Développement du lanceur package acces_bd; public class composantserv { public static void main (String args []) { REQUETE REQUETEImpl=null; //Nom du mandataire REQUETEImplementation tmp=null; //Nom du serveur try { tmp=new REQUETEImplementation(); REQUETEImpl = new _tie_REQUETE(tmp); }catch(SystemException se1) { } try { IE.Iona.OrbixWeb._CORBA.Orbix.impl_is_ready("SERVICEREQUETES");} catch(SystemException se) {} }

18 Stéphane Frenot - Département Télécommunication - SID - II - Corba Inscription du lanceur putit -j LAREQUETE acces_bd.composantserv Implantation sur le système de fichiers du serveur Annuaire des objets du système distribué (Interface Repository) –Banque dobjets métiers de lentreprise –Accessible à lORB et aux développeurs Possibilité de fédération dIR

19 Stéphane Frenot - Département Télécommunication - SID - II - Corba 138 Liste des services

20 Stéphane Frenot - Département Télécommunication - SID - II - Corba 139 Le fichier de définition

21 Stéphane Frenot - Département Télécommunication - SID - II - Corba 140 Développement du client Se connecte sur le service d'intermédiation Demande l'accès à un service particulier Reçoit une référence sur le mandataire du serveur Peut invoquer des méthodes sur les mandataires serveurs pour récupérer des valeurs. Aussi simple que si l'objet serveur est local

22 Stéphane Frenot - Département Télécommunication - SID - II - Corba Développement du client package acces_bd; public class composantcli { public static void main(String args[]) { REQUETE myreq = null; String [] reponse=new String [0]; ORB.init();//Initialisation de l'accès à l'ORB try { myreq = REQUETEHelper.bind(":LAREQUETE","lisisun1.insa-lyon.fr); } catch (Exception raison) { // } String req= "select * from tab"; try { reponse=myreq.executer_req(req); }catch (Exception raison){ } for (int i=0; i

23 Stéphane Frenot - Département Télécommunication - SID - II - Corba 142 Classes impliquées sur le client classe Classe statique interface héritage Classe Abstraite Package

24 Stéphane Frenot - Département Télécommunication - SID - II - Corba 143 Classes impliquées sur le serveur

25 Stéphane Frenot - Département Télécommunication - SID - II - Corba 144 Schéma général de développement Description dinterface en IDL Souches IDL Code des clients + Applications clientes (5) Implantation des clients (1) Compilation IDL Squelettes IDL (2) Implantation des interfaces IDL Code des classes + (3) Implantation des serveurs Référentiel des Implantation (4) Installation Configuration des serveurs Référentiel des Interfaces

26 Stéphane Frenot - Département Télécommunication - SID - II - Corba 145 Les Services CORBA La Plomberie CORBA Les Canevas CORBA OMA : Object Management Architecture

27 Stéphane Frenot - Département Télécommunication - SID - II - Corba 146 OMG Services Objets Développés Spécifiques et non standardisés Utilitaires Communs Services orientés utilisateurs SantéFinanceTélécom verticaux horizontaux IU Gestion information Administration Système Gestion des tâches Nommage Externalisation Persistance Cycle de vie Evénement Transactions Propriétés Relations CollectionsTemps Sécurité daccès Versions NégociateursLicences Service Objet Communs Services orientés systèmes Concurrence daccès Common Object Request Broker Architecture (CORBA)

28 Stéphane Frenot - Département Télécommunication - SID - II - Corba 147 Un autre exemple : Médicaments typedef sequence liste_chaine; interface Medicaments { attribute string code_cip; attribute string nom_medicament; liste_chaine donner_indications(in string code_cip); liste_chaine donner_contre_indications(in string code_cip); liste_chaine donner_effets_indesirable(in string code_cip); struct_interac donner_interactions(in string code_cip1,in string code_cip2);}; struct resultat_interactions { string principe_actif1; string principe_actif2; string nom_pa1; string nom_pa2; string libelle_gravite; string libelle_message; string type_interaction; }; typedef sequence struct_interac;

29 Stéphane Frenot - Département Télécommunication - SID - II - Corba 148 Canevas de composants Client ORB Description des médicaments Espace 1Espace 2 Service de requêtage Espace 3 ORB

30 Stéphane Frenot - Département Télécommunication - SID - II - Corba 149 Architecture fonctionnelle de lORB Invocation Dynamique Souches IDL Interface de lORB Squelettes IDL (statique) Squelettes Dynamique Adaptateur dobjets Noyau de lORB Référentiel des Implantations Référentiel des Interfaces Client Implantation Objet : serveur Interface standard des ORB Une interface par classe dobjet Spécifique à lORB

31 Stéphane Frenot - Département Télécommunication - SID - II - Corba 150 Composants de Corba (Spec. V2.0) ORB : Négociateur de requêtes objet BOA : Adaptateur dobjets IDL : Langage de définition des interfaces SII : Interface dinvocation statique IR : Entrepôt des interfaces et implantations Mise en correspondance vers langages hôtes java, c, c++... IIOP : Communication inter-ORB DII : Interface dinvocation dynamique DSI : Squelette dinterface dynamique

32 Stéphane Frenot - Département Télécommunication - SID - II - Corba 151 CORBA, cest : Une architecture complète dobjets distribués Des spécifications techniques qui font partie dun tout : lOMA Séparation entre la couche service (IDL) et la plomberie (ORB)

33 Stéphane Frenot - Département Télécommunication - SID - II - Corba 152 Limitation des fonctionnalité Pas de réponse par rapport aux problèmes classiques des applications distribuées : –Délais dattente –Tolérance aux pannes –Ordonnancement des événements –Verrou Mortel De plus –Pas de transmission d'objets –Pas de traitements groupés –Problème des objets à granularité fine

34 Stéphane Frenot - Département Télécommunication - SID - II - Corba 153 Limitation des performances Plus lent quune application spécifique –Surcoût lié à la résolution de noms –Traitement des paramètres –Recopie de données –Gestion de la mémoire –Démultiplexage Probleme classique : –Trouver léquilibre entre extensibilité, solidité, maintenabilité et efficacité des couches de bas niveau Un bon ORB devrait être capable doptimiser les fonctionnalités supérieures

35 Stéphane Frenot - Département Télécommunication - SID - II - Corba 154 Marché des objets distribués Architectes de canevas de composants Développeurs de composants Intégrateurs de composants Biblio ? ORB public : HORB, MICO, Jonathan Manuels de Iona, Visigenic...

36 Stéphane Frenot - Département Télécommunication - SID - II - Corba 155 Modes d'invocation transparent objetDistant.methode( ); objetDisant= ServicedeRecherche.recherche("UnObjet"); resultat=objetLocal.methode(objetDistant); resultat=objetDistant.methode(objetDistant2); ObjetDistant=new ObjetDistant( );

37 Stéphane Frenot - Département Télécommunication - SID - II - Corba 156 Compléments Krakowiak J.M. Geib, C. Gransart, Ph.Merle CORBA, des concepts à la pratique Douglas Schmidt


Télécharger ppt "Stéphane Frenot - Département Télécommunication - SID - II - Corba 120 CORBA."

Présentations similaires


Annonces Google