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



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

NFP111 Systèmes et Applications Réparties

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

Intergiciels orientés composants.

CORBA haute performance

Mise en œuvre des serveurs d application

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Meta Object Facility. Plan

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

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

Introduction aux intergiciels

Alfstore workflow framework Spécification technique

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

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

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

La démarche MDA. Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)*

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

Introduction aux «Services Web»

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

Architecture à base de composants pour le déploiement adaptatif des applications multicomposants

Programmer en JAVA. par Tama

2 Chapitre 1 Introduction

Plan. Department of Informatics

Introduction à CORBA

RMI le langage Java XII-1 JMF

Remote Method Invocation en Java (RMI)

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

Remote Method Invocation (RMI)

Software Engineering and Middleware A Roadmap

Chapitre VI- La validation de la composition.

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Web Tier : déploiement de servlets

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Remote Method Invocation Les classes implémentant Serializable

EXA1415 : Annotations

Intergiciel - concepts de base

NSY102. Conception de logiciels Intranet Introduction

Java Naming and Directory Interface

OS Réseaux et Programmation Système - C5

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

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

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Patrons de Conception (Design Patterns)

Evaluation Idéopass Cahier d analyse technique

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Compte Rendu d intégration d application

TP1 : Initiation à Java et Eclipse

Création d une application JEE

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

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

Ingénierie des Modèles. Méta-modélisation

4. SERVICES WEB REST 46

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

1. Installation d'un serveur d'application JBoss:

OpenPaaS Le réseau social d'entreprise

Calcul Parallèle. Cours 5 - JAVA RMI

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Java Aspect Components (JAC)

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

Chapitre 2 - Architecture logicielle et construction d applications client-serveur

Création d objet imbriqué sous PowerShell.

as Architecture des Systèmes d Information

Le passage à l échelle de serveur J2EE : le cas des EJB

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

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

JOnAS 5. Serveur d application d

DotNet. Plan. Les outils de développement

Générer du code à partir d une description de haut niveau

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

Architecture d'entreprise : Guide Pratique de l'architecture Logique

TD2 Programmation concurrentielle

Architecture Orientée Service, JSON et API REST

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Module BD et sites 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

Corrigé des exercices sur les références

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

RTDS G3. Emmanuel Gaudin

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Cours en ligne Développement Java pour le web

Vulgarisation Java EE Java EE, c est quoi?

Bases Java - Eclipse / Netbeans

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Java c est quoi? Java pourquoi?

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

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

devant l université de Rennes 1

Refonte front-office / back-office - Architecture & Conception -

Programmation par composants (1/3) Programmation par composants (2/3)

THÈSE. Présentée à. en habilitation conjointe avec l Université de Rennes 1. En vue de l obtention du grade de. DOCTEUR de l ENST Bretagne.

Java - RMI Remote Method Invocation. Java - RMI

Java pour le Web. Cours Java - F. Michel

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

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

Transcription:

Composants Logiciels Christian Pérez Le modèle de composant de CORBA Année 2010-11 1 Plan Un rapide tour d horizon de CORBA 2 Introduction au modèle de composant de CORBA Définition de composants CORBA Exemple du dîner des philosophes Introduction à CIDL 2 1

Un rapide tour d horizon de CORBA2 Qu est ce que CORBA CORBA = Common Object Request Broker Architecture Défini par l Object Management Group (OMG) CORBA 2: Standard pour la programmation d objets distribués Bus logiciel Orienté objet Mécanisme d invocation de méthode à distance Indépendant des machines, des systèmes d exploitation et des langages de programmation Indépendant des vendeurs (interopérabilité) 4 2

Qu est ce que CORBA 2 (suite) CORBA définit Un langage de spécification (IDL) ~ interfaces en Java + sens des données (IN, OUT, INOUT) Des interfaces pour invoquer des méthodes à distance Un ensemble de services pour manipuler aisément les objets CORBA simplifie La localisation des objets L invocation des méthodes distantes 5 Application CORBA 2 Ensemble d objets et de clients Chaque objet possède une description publique Opérations et attributs pouvant être accédés à distance void opb(in int val); Application cliente Application serveur S2->opB( 10 )... proxy de l objet distant ORB = courtier d objet objet void opb( int ) { 6 3

CORBA un modèle client/serveur objet appel locaux code client Référence d objet Interface d objet représente Requête ORB objet CORBA Activation servant Code d implantation AO implémente Coté client Coté service 7 Rôle du langage IDL client IDL specification Implementation de l objet Compilateur IDL Squelette Souche Adaptateur d objet GIOP / IIOP / ESIOP ORB core Description des interfaces des objets Langage pivot entre applications Génération des souches & squelettes 8 4

Exemple de description d interface en IDL module ServiceDate { typedef unsigned short Jour; enum Mois { Janvier, Février, F Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, DécembreD typedef unsigned short Annee; struct Date { Jour le_jour; Mois le_mois; Annee l_annee; typedef sequence<date> desdates; interface Calendrier { attribute Annee annee_courante; boolean vérifier_une_date rifier_une_date(in in Date d); void le_jour_suivant(inoutinout Date d); } 9 Introduction au modèle de composant de CORBA 5

De CORBA 2... Un modèle orienté objet distribué Hétérogénéité: OMG Interface Definition Language Portabilité: des projections standardisées Interopérabilité: GIOP / IIOP Plusieurs modèles d invocation: SII, DII et AMI Middleware: ORB, POA, etc. Pas de support standard pour l empaquetage et le déploiement!!! Programmation explicite des propriétés non fonctionnelles! cycle de vie, (de)activation, service de nommage, de courtier, de notification, de persistance, de transactions,... Pas de notion d architecture logicielle 11...au modèle de composant de CORBA (CCM) Un modèle orienté composant distribué Une architecture pour définir des composants et leurs interactions Une technologie d empaquetage pour déployer des binaires exécutable multi-langages Un framework à conteneur pour gérer le cycle de vie, (de)activation, sécurité, transactions, persistance et les évènements Interopérabilité avec Enterprise Java Beans (EJB) Le premier modèle de composant industriel multi-langages Multi-langages, multi-oss, multi-orbs, multi-vendeurs, etc. CORBA 3.0 Juillet 2002 12 6

Contenu des spécifications CCM Un modèle abstrait de composants Étend l IDL et le modèle objet Framework d implémentation des composants (CIF) Composant Implementation Definition Language (CIDL) Un modèle de programmations des conteneurs de composants Vues de l implémenteur et du client Intégration avec les services de sécurité, de persistance, de transactions et d évènements 13 Contenu des spécifications (2) Des facilités d empaquetage et de déploiement Fichiers de descriptions en XML L interopérabilité avec EJB via des passerelles Des méta-modèles De composants Une interface «Repository» et des extensions au MOF 14 7

Le grand schéma de CCM designers implementer IDL/CIDL File User's Code Programming Language Tools Home Properties composant Properties IDL/CIDL Compiler Stubs, Skeletons Implementation Default Properties CORBA composant Package User written file Compiler Generated files composant Descriptor Packaging Tool packager CORBA composant Package softpkg Descriptor Assembly Tool assembler CORBA composant Package composant Assembly Package Deployment Tool Assembly Descriptor deployer 15 Définition de composants CORBA Le modèle abstrait des composants 8

Le modèle abstrait des composants Il décrit comment un composant CORBA est vu par les autres composants et par les clients Ce qu offre un composant aux autres composants (provide) Ce qu il demande des autres composants (use) Le modèle de collaboration utilisé entre composant Synchrone via les invocations d opération Asynchrone via la notification d évènement Quelles propriétés du composant sont configurables Quelles sont les opération du cycle de vie (home) 17 Un composant CORBA composant interface FOURNI facettes Puits d évènement Mon composant réceptacles REQUIS Sources d évènements Attributs 18 9

Construction d une application CCM = Assemblage d instances de composants 19 Exemple du dîner des philosophes 10

Exemple: le dîner des philosophes Thinking Hungry Starving Eating Dead Fork Descartes Thinking Hungry Starving Eating Dead Kant Fork Aristotle Fork Thinking Hungry Starving Eating Dead 21 Composants CORBA Philosopher Fork name = Kant Component Base ref. Facet Receptacle Event Sink Event Source Fork Philosopher name = Descartes Fork Philosopher name = Aristotle Observer 22 11

Le composant Fork exception InUse { interface Fork { void get() raises (InUse); void release(); ForkHome Fork Manager // Le composant component ForkManager { // Facette utilisé par les phisolphes. provides Fork the_fork; // Maison pour instancier les composants ForkManager home ForkHome manages ForkManager { 23 Les types d état d un philosophe enum PhilosopherState { EATING, THINKING, HUNGRY, STARVING, DEAD eventtype StatusInfo { public string name; public PhilosopherState state; public unsigned long ticks_since_last_meal; public boolean has_left_fork; public boolean has_right_fork; 24 12

Le composant philosophe component Philosopher { attribute string name; // The left fork receptacle. uses Fork left; // The right fork receptacle. uses Fork right; PhilosopherHome Philosopher name = XXX // The status info event source. publishes StatusInfo info; home PhilosopherHome manages Philosopher { factory new(in string name); 25 Le composant observateur component Observer { // The status info sink port. consumes StatusInfo info; Observer Home Observer // Home for instantiating observers. home ObserverHome manages Observer { 26 13

Introduction à CIDL Description du problème CIDL Exemple Quel est le problème? L interface abstraite du composant définie en IDL3 Question: comment on l implémente? 28 14

Implémentation de composants v1 Première solution Implémentation dépendant Exemple les webservices Avantage Très grande liberté d implémentation Contrôle des dépendances (bibliothèques) Inconvénient Pas portabilité du code écrit Quid de la génération de code? Pas de gestion des services systèmes 29 Implémentation de composants v2 Deuxième solution Définir un environnement d implémentation Exemple CCM Avantage Portabilité du code écrit Gestion automatique de service système Gain de temps Inconvénient Il faut maîtriser le modèle Liberté d implémentation a priori restreinte Non restreinte car CIDL non obligatoire 30 15

Implémentation de composants CCM Deux modèles de CCM sont principalement utilisés Framework d implémentation des composants (CIF) Composant Implementation Definition Language (CIDL) Un modèle de programmations des conteneurs de composants Vues de l implémenteur et du client Intégration avec les services de sécurité, de persistance, de transactions et d évènements 31 Component Implementation Definition Language (CIDL) Décrit une composition de composant Entité agrégé qui décrit tous les artéfacts requis pour implémenté un composant et sa maison Gère la persistance d un composant Basé sur le OMG Persistent State Definition Language (PSDL) Liens entre des types de stockage et les exécuteurs segmentés Génère des squelettes d exécuteur fournissant La segmentation des exécuteurs des composants Une implémentation par défaut des opérations de callback La persistance de l état d un composant 32 16

Notion de Composition CCM Entité agrégée décrivant les artéfacts requis pour implémenter un composant et sa maison Nom de la composition Catégories de cycle de vie des composants Service, session, process, entity Un type de maison de composant (1) Le type du composant à implémenter est défini implicitement Une définition d exécuteur de la maison (2) Une définition d exécuteur du composant (3) Une définition de délégation Une définition pour un proxy de la maison Une association à un espace de stockage abstrait composition <categorie> nom_composition { home executor nom_executeur_maison { // (2) implements nom_type_maison; // (1) manages nom_executeur; // (3) } 33 Notion d exécuteur Artéfact de programmation implémentant une abstraction. Dans les langages objets, un exécuteur = un objet 34 17

35 OMG CIDL Compilation Process Component Designer Composition Designer Component Implementer OMG IDL 3.0 includes imports OMG CIDL Component Executor OMG IDL 3.0 Compiler Local Server-side OMG IDL OMG CIDL Compiler inherited by and completed delegates to Component Skeleton partially implemented Component Executor Skeleton User written Compiler Generated files 36 18

Maison du composant ForkHome exception InUse { interface Fork { void get() raises (InUse); void release(); Fork Manager // Le composant component ForkManager { // Facette utilisé par les phisolphes. provides Fork the_fork; // Maison pour instancier les composants ForkManager home ForkHome manages ForkManager { 37 CIDL Composition for Observer Component #include <philo.idl> // or import DiningPhilosophers; composition session ForkManagerSessionComposition { home executor ForHomeImpl { implements DiningPhilosophers::ForkHome; manages ForkManagerImpl; 38 19

Implémentation de la maison package DiningPhilosophers.monolithic; import DiningPhilosophers.*; public class ForkHomeImpl extends org.omg.corba.localobject implements CCM_ForkHome { public ForkHomeImpl(){} public org.omg.components.enterprisecomponent create() { return new ForkManagerImpl(); } public static org.omg.components.homeexecutorbase create_home() { return new ForkHomeImpl(); } } 39 Implémentation du composant package DiningPhilosophers.monolithic; import DiningPhilosophers.*; public class ForkManagerImpl extends org.omg.corba.localobject implements CCM_ForkManager, CCM_Fork, org.omg.components.sessioncomponent { private boolean available_; public CCM_Fork get_the_fork() { // From CCM_ForkManager return this; // Returns an implementation of the Fork facet } public void get() throws InUse { // From CCM_Fork if (! available_) throw new InUse(); available_ = false; } public void release() { // From CCM_Fork if (available_) return; available_ = true; } } 40 20