objets distribués et composants les applications actuelles et futures cours essi3 sar5
TRANSCRIPT
![Page 1: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/1.jpg)
Objets Distribuéset Composants
Les applications actuelles et futures
Cours ESSI3 SAR5
![Page 2: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/2.jpg)
Chronique d’une invasion annoncée
Pourquoi? Comment?
Qui : Corba / COM-DCOM / Java RMI…
![Page 3: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/3.jpg)
Pourquoi ?
• Maturation de la technologie orientée objet– ADA, Modula– Smalltalk , C++, Java
• Maturation des communications Client-Serveur – sockets– RPC – couches OSI
![Page 4: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/4.jpg)
L’héritage de la programmation par objets
Communication par envoi de messagesEncapsulation et InterfaceHéritage et Composition
![Page 5: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/5.jpg)
Objets = briques logicielles
• Assembler des briques élémentaires
• Réduire la complexité des systèmes d’information
Séparation entre interface et implémentation
Représentation et types de données
Mécanismes d’abstraction
![Page 6: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/6.jpg)
Séparation entre interface et implémentation
• séparation de la définition et de l’implémentation : encapsulation
• interface : partie visible de l’objet
• implémentation : partie privée inaccessible depuis d’autres objets
• interface = contrat entre l’objet et le monde extérieur
![Page 7: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/7.jpg)
Séparation entre interface et implémentation
• Assemblage des objets dépend uniquement des interfaces, le changement local d’un objet ne perturbe pas l’ensemble de l’application.
Importance de la nomenclature des objetssubstitution logique liée à la substitution physique
![Page 8: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/8.jpg)
Représentation et Types de données
• Définition de nouveaux types
• Choix d’un type pour une donnée (ex. montant) devient une contrainte sur la conception.
Types de données Abstraits
considérés comme des types de base
![Page 9: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/9.jpg)
Mécanismes d’abstraction
• Abstraction des données : essence du procédé de construction de systèmes d ’information à base d ’objets distribués
• par Classe et/ou Composition
Des mises en œuvre différentes selon les cas
![Page 10: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/10.jpg)
L’héritage de la programmation Client Serveur
Appel de procédures à distanceImportance du marshallingDes serveurs accessibles simultanément par plusieurs clientsEnregistrement des serveurs dans des annuaires de nomsCommunication connectée ou par message…..
![Page 11: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/11.jpg)
Langages de spécifications
• Spécifications des types de données qui transitent sur le réseau
• XDR et RPC de SUN
Protocole := CHOICE { requete [0] REQUETE, reponse [1] REPONSE }
Programme reqrep { version {
REPONSE rerep(REQUETE) = 1 }= 1} = 10000
ASN.1 et norme ISO
![Page 12: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/12.jpg)
Exemple : annuaire des surnoms
XDR et RPC de SUN
Protocole := CHOICE { enregistrerReq [0] SEQUENCE{PrintableString nom,
PrintableString surnom} enregistrerRep[1] BOOLEAN, listerReq [2] NULL, listerRep [3] SET OF Personnes, ….}
Programme surnoms { version {
boolean enregistrer(nomSurnom) = 1; listePersonnes lister(void)=2 }= 1} = 10000
ASN.1 et norme ISO
![Page 13: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/13.jpg)
Générateurs de Stubs
RPCGEN / MAVROS
ASN1 XDR
Librairie marshalling et unmarshalling
squelettes du client et du serveur
Spécificationsdes données
Générateurs
Types de donnéesC Lisp Java
Types de données
C
Fichiersgénérés
![Page 14: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/14.jpg)
Circulation de messages et machines hétérogènes
• Couche de services
• Objets de l’application qui résultent de la conception du modèle
• Couche de transport
• Responsable de l’administration des objets et de l’acheminement des messages
Infrastructure informatique de distribution
![Page 15: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/15.jpg)
Introduction de services
• Gestionnaires de noms (x500, nis, dns…)
• Synchronisation (transaction …)
• Sécurité
![Page 16: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/16.jpg)
Des Annuaires de Noms
Yellow Pages
X500
LDAP
![Page 17: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/17.jpg)
CLIENT SERVEUR
Transport TCP IP...
Service (marshalling..)
transaction sécurité nommage
Infrastructure ?
![Page 18: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/18.jpg)
Objets distribués
• Un programme (objet) peut être à la fois client de certains serveurs et serveur d’autres clients
• Il peut y avoir reconfiguration dynamique des rôles Client Serveur
![Page 19: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/19.jpg)
Infrastructure Objets Distribués
Client Client Serveur Serveur
Objet1
Objet2 Objet3
![Page 20: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/20.jpg)
Implémentation des objets distribués
• Corba indépendant des langages de programmation
• Projections C,C++, Java
• Un langage de Spécification IDL
• Orienté C++
Tout Java
![Page 21: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/21.jpg)
CORBA, DCOM et JAVA
• une interface = une unité élémentaire
• héritage des interfaces• aucune interface
imposée• normalisation des
interface
• au moins une interface : Iunknown
• non transmissible par héritage
• composition d’interfaces
• héritage de classe • implémentation de plusieurs interfaces possibles
![Page 22: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/22.jpg)
Générateurs
RMIC / Orbix...
IDL Int. JavaSpécificationsdes données
Générateurs
Fichiersgénérés Stubs Skeletons Proxy
(mise en œuvre de la sérialisationet désérialisation…)
![Page 23: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/23.jpg)
CORBA
module Surnoms {
typedef string Nom ;
struct Personne {Nom nom;
string surnom;};
typedef sequence<Personne> ListePersonnes;
interface Surnoms{
exception ExisteDeja{string surnom;};
boolean enregistrer(in Personne personne) raises (ExisteDeja);
…..
};
};
![Page 24: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/24.jpg)
Surnoms.java
Compilation interface IDL
Client
StubForSurnoms.java _SurnomsImplBase.java
Serveur
SurnomsImpl.javaClient.java
Serveur.java
A écrireGénéré
1- Exemple introductif
Surnoms.idl
Compilateur IDL/Java
Répertoire gridRépertoire grid
Répertoire gridRépertoire Surnoms
I
SurnomsHelper.java
SurnomsHolder.java
jidl Surnoms.idl
![Page 25: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/25.jpg)
RMI
public interface Surnoms extends java.rmi.Remote{public Boolean enregistrer(String nom, String surnom) throws
java.rmi.RemoteException, ServeurSurnoms.surnoms.ExisteDeja ;
…. }
![Page 26: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/26.jpg)
RMI
Classes et Interfaces
ClasseLocale
Souche Squelette
ClasseDistante
InterfaceDistante
Remote
Appel méthode m() Appel méthode m()
Machine locale Machine distante
InterfaceDistante
![Page 27: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/27.jpg)
Comment activer des objets distribués ?
• Messages échangés entre objets =– Requêtes ou Résultats
• Certains envois de messages n’attendent pas de résultats
• Requête = Destinataire + nom de méthode + Paramètres
• Résultat = Donnée ou indication d’une erreur ou d’une défaillance
![Page 28: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/28.jpg)
Comment activer des objets distribués ?
• Mécanisme d’exécution ou de transport– définit comment les messages sont véhiculés de
l’objet client vers l’objet serveur (destinataire)– retrouver et activer les objets adéquats
• Un objet client a deux manières d’envoyer des messages – invocation statique– invocation dynamique
![Page 29: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/29.jpg)
Invocation statique
• Le nom de l’objet destinataire et le message sont connus au moment du développement
• Ne permet ni l’ajout ni le retrait d’objets dans les serveurs
![Page 30: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/30.jpg)
Invocation dynamique
• Permet au programme client de– découvrir les objets à l’exécution et les interfaces
proposés par ces objets
– construire dynamiquement messages et requêtes
– envoyer et recevoir le résultat de telles requêtes
• Rend les systèmes réactifs et faciles à modifier
OFFERT PAR CORBA, DCOM et JAVA
![Page 31: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/31.jpg)
L’invocation dynamique
• API (DII) de construction de requêtes– sans passer par des souches prégénérées
• Un objet Request = un nom d’opération, une liste de couples valeur - type (au sens de l’IR) et une structure pour le résultat– invoke– send_deferred + get_response, poll_response– send_oneway
![Page 32: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/32.jpg)
Invocation dynamique + surcharge
• flexibilité du code
• briques logicielles avec les mêmes messages pour des objets de différentes natures– définir de nouveaux objets sans modifier
l’interface– changements qui n’affectent pas les clients
![Page 33: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/33.jpg)
Invoquer les services dont il a besoin par envoi de requêtes
Accès à l’objet destinataire par une référence à son implémentation par l’interface
Rôle du client
Unités autonomes - solidité - robustesse - adaptation
ID
![Page 34: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/34.jpg)
Rôle de l’infrastructure
• administre les implémentations, la création et la destruction d’objets
• réceptionne les requêtes, localise le serveur, vérifie son état et celui du destinataire
• active au besoin le serveur, lui envoie les données de la requête
• ramène les résultats au client
• doit être informée de l’arrêt d’un serveur
• doit gérer la persistance
![Page 35: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/35.jpg)
Rôle du serveur
• Administrer un flot de requêtes pour un ou plusieurs objets dont il a la responsabilité
• Ordonnancer la séquence des opérations de réponses à une requête
![Page 36: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/36.jpg)
Rôle du serveur d’objets
• active si besoin l’objet destinataire
• recherche et exécute la méthode
• passe le résultat à l’infrastructure
• plusieurs requêtes peuvent arriver simultanément
• arrêt du serveur : désactiver tous les objets et enregistrer leur état
![Page 37: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/37.jpg)
Un peu plus sur l’infrastructure
• transport des messages
• localisation des serveurs et des objets
• persistance
ORB pour CORBAnorme Corba 1
DCOM pour OLEnon formelle
JDK
![Page 38: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/38.jpg)
Transport des messages
• Références aux objets– identifiant (libre choix d ’implémentation dans le
norme CORBA)– nombres codés sur 128 bits en OLE – url Uniform Resource Locator en Java RMI
Performances différentes et incompatibilités entre ORBset entre ORB et COM
![Page 39: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/39.jpg)
Scénario d ’obtention de la référence du service de nommage
Client ou Serveur ORB
CosNaming::NamingContext
resolve_initial_references ("NameService");
conversion
ajout,retrait,lecture,...
![Page 40: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/40.jpg)
Enregistrer un objet
• Opération pour publier un Objet– en général, opération réalisée par le serveur
• Scénario Type1. Créer un objet2. Construire un chemin d ’accès (Name)3. Appeler l ’opération « bind » ou « rebind » avec le chemin et la référence de l ’objet
void bind (in Name n, in Object obj) raises (NotFound, CannotProceed, InvalidName, AlreadyBound);
![Page 41: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/41.jpg)
Retrouver un objet
• Opération réalisée par un client ou un serveur
• Scénario type :
– construire un chemin d ’accès (Name)
– appeler l ’opération « resolve » avec le chemin
– convertir la référence obtenue dans le bon type
Object resolve (in Name n)
raises (NotFound, CannotProceed, InvalidName)
![Page 42: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/42.jpg)
Interaction Client Enregistreur
client serveur
client registreLookup : où est objetDistant ?
stub
Il est ici
Envoyez le stub
Le voicistub squelette
objetDistant
result = objetDistant.m()
result
RMIRegistry + ClassLoader
![Page 43: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/43.jpg)
Interface avec l’infrastructure Un peu de vocabulaire
• Coté client :– stub en CORBA– proxy en OLE– stub/proxy en Java
• Côté Serveur :– stub en OLE– skeleton en CORBA– implémentation d’une interface en RMI
• BOA Objects Adaptaters
![Page 44: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/44.jpg)
Mécanisme de Transport : Client - Serveur
• Appel direct : DLL (in process - utilisation du même espace mémoire)
• Appel indirect :– LRPC (application sur la même machine)
passe par le proxy– RPC (sur 2 machines différentes)
• IIOP en Corba
![Page 45: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/45.jpg)
Invocations
• Invocations statiques– IDL en CORBA stub + skeleton– En OLE
• appel direct si in process
• proxy + stub si application fournis uniquement pour les applications MicroSoft
• Versions récentes définition du langage ODL
• IDL et ODL sont incompatibles
![Page 46: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/46.jpg)
Invocations
• Invocations dynamiques– DII en CORBA– IDispatch en OLE– java reflect
• Du ressort de l’infrastructure
![Page 47: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/47.jpg)
CORBA vs OLE
• définition du serveur très générale laissée à l’implémentation
• flexibilité primordiale pour l’intégration de systèmes (BDD…)
• processus formel avec l’OMG
• un serveur est une application ou une DLL
• stratégie commerciale et pratique
![Page 48: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/48.jpg)
Services et Objets Distribués
• Services normalisés• Seulement certains
sont implémentés• Naming, Trading,
Event• Le programmeur doit
les connecter…
Des services en Programmant avec JavaSecurité,Threads, Événements
Url et Web
Non intégrés à RMI
![Page 49: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/49.jpg)
Les points communs des middlewares en objets distribués
(aspect réseau)
Adressage : à tout objet doit être affecté une référence uniqueTransport : pour établir une communication entre 2 nœuds et transmettre une requêteMarshalling :transformation de la requête pour passer sur leréseau
![Page 50: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/50.jpg)
Les points communs des middlewares en objets distribués
(aspect réseau)
Activation :activer les implémentations des objetsDispatching :gestion des threadsProtocol :transmission des requêtes entre exécutablesDes services communsServices de nommage, Interface repository.....
![Page 51: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/51.jpg)
Les points communs des middlewares en objets distribués
(aspect objet)
Encapsulation :Interdire l'accès direct au contenu de l'objetInterface :Permettre l'évolution du codeHéritage / Composition :Gérer les versionsEnvoi de messagesPrivilégier les communications synchrones
![Page 52: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/52.jpg)
Un bref comparatif
Origine Microsoft OMG JavaSoft
Archi COMDCOM
IDL ORBIIOP
Java RMIApplet
Interfaces IUNKnownprédéfinies
Définies enIDL
Définies enJava
![Page 53: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/53.jpg)
Un bref comparatif
Interface+ Agrégationcomposition
Héritage Héritageextends
Langage C++ C C++Smalltalk
Java
Infrastr. Proxystub
Stubskeleton
ProxyR O
![Page 54: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/54.jpg)
Un bref comparatif
Serveur AppliDLL
AppliBiblioBDD
Appli Java
Client AppliDLL
AppliBiblioBDD
Appli JavaApplets
Création IFactory Instanciéen LOO
InstanciéEn Java
![Page 55: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/55.jpg)
Un bref comparatif
Appeldyn.
IDispatch DII Introsp.beans
Ident. Reg. OLE Service denommage
URL
Comm. DCOMDCE
IIOP RMI(TCP/IP)
![Page 56: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/56.jpg)
Des objets distribués aux composants
Chronique d’une invasion annoncée
Pourquoi? Comment?
Qui : / Corba3 CCM/ Web Services
(.net, J2EE) / EJBs …
![Page 57: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/57.jpg)
Quels Composants ?
Une vision « simplifiée » : les Web Services
Des composants « normalisés » : CCM
Des composants pratiques : EJB
Et tout ce que l'avenir nous réserve : OpenCCM,Fractal ….
![Page 58: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/58.jpg)
• Une « unité logique applicative »• Une «librairie» fournissant des données et des services
à d’autres applications.• Un objet métier déployé sur le web (vision objet)• Un « module » ou « composant » (Application avec
JAX-RPC : un composant simple avec une interface RMI )
Une sorte d'objet… plutôt qu'un composant
Un Service Web, c’est quoi ?
![Page 59: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/59.jpg)
Architecture globale
![Page 60: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/60.jpg)
Un langage de description : WSDL
Une infrastructure : Le Web et http
Une communication par envoi de messages : SOAP
Du marshalling : XML
Un service de nommage « dynamique » : UDDI
Points communs avec les middlewares objets
![Page 61: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/61.jpg)
AnnuaireUDDI
ClientXMLXML
5 : J’ai compris comment invoquer5 : J’ai compris comment invoquerton service et je t’envoie un documentton service et je t’envoie un document
XML représentant ma requêteXML représentant ma requête
Serveur
2 : J’ai trouvé! Voici le serveur2 : J’ai trouvé! Voici le serveurhébergeant ce service webhébergeant ce service web
3 : Quel est le format d’appel du3 : Quel est le format d’appel duservice que tu proposes? service que tu proposes?
ContratSOAP
ContratSOAP
4 : Voici mon contrat (WSDL)4 : Voici mon contrat (WSDL)
XMLXML
XMLXML
6 : J’ai exécuté ta requête et je te retourne le résultat6 : J’ai exécuté ta requête et je te retourne le résultat
1 :
Je r
ech
erch
e1
: Je
rec
her
che
un
ser
vice
WE
B
un
ser
vice
WE
B
Cycle de vie d’utilisation
![Page 62: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/62.jpg)
Cycle de vie plus complet…
• Déploiement du service Web
• Enregistrement du service Web
• Découverte du service Web
• Invocation du service Web par le client
![Page 63: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/63.jpg)
Pour être de vrais composants…
- Description des interfaces requises
- Langage pour gérer le flux d’exécution :
WSFL
- des services spécifiques
- sécurité (SAML, …)
- transactions (BTP, …)
- une découverte des services web (W3C)
![Page 64: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/64.jpg)
Des environnements intégrés .net
• Toute la mécanique est cachée• On peut se concentrer sur la conception• Aide à l'assemblage ?
• Des adeptes et des sceptiques– Passage à l'échelle ?– Evolution ?– Interopérabilité ?
![Page 65: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/65.jpg)
• Une brique permettant la programmation par assemblage
• Une solution facilitant le déploiement, la gestion du cycle de vie des applications logicielles
• Une meilleure intégration des services
plus qu'un objet
Un composant, c’est quoi ?
![Page 66: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/66.jpg)
Exemple des différents éléments
25
Création et utilisation de Bank
Client
Server
JNDI
BankHomeImpl
bh: BankHome
Context
1: bh = lookup()
1.1: lookup()
b : Bank
BankBean
2.3.1: new()2.3.2 setSessionContext()2.3.3 ebjCreate()
2: b = create()
2.1: create()
2.2: create()
3: deposit()3.1: deposit() 3.2: deposit()
III. Composants : 2. EJB
E
![Page 67: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/67.jpg)
Exemple de modèle de composant
30
Modèle abstrait de composant CORBA
Imp
lém
enta
tion
de fa
cette
ConsommateurPayer,
sélectionner, prendre
Ouvrir,remplir,
mettre Monnaie…
Fournisseur
Ouvrir capot, fermer,
Réparateur
Fa
cett
es
réceptacle
Prise de courant
Prise d’eau
*
Plus de monnaie
vide
*Température
Source d’évènementsPuit d’évènements
On/Off
Attributs
III. Composants : 3. CORBA C.
![Page 68: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/68.jpg)
EJB – CORBA 3: Points communs avec les
middlewares objets
Langages de description : CIDL ou Interfaces Java
Infrastructure : RMI / ORB
Marshalling : repose sur Corba / RMI
Nommage : Home ++
Interface : Héritage + Composition
![Page 69: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/69.jpg)
EJB – CORBA 3: Apports
Interfaces entrées et sorties : ports requis et offerts
Conteneur : intégration des propriétés non Fonctionnelles (sécurité, persistance, transaction)
Home : fabrique et navigation
Communication par envoi de message et notification (événement)
![Page 70: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/70.jpg)
Un vrai cycle de vie
• Fichier de déploiement
• Packaging d'assemblage
Approche déclarative basée sur XML
![Page 71: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/71.jpg)
Prochaine invasion dans la lignée ?
Approche composant revisitée :
Open CCM : une meilleure solution CCM + MDA(+ d'abstraction des inrastructures, projections vers des middlewares connus…)
Des Composants à conteneurs ouverts (travaux de recherche)
Des composants adaptables (fractal)
![Page 72: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/72.jpg)
Les problèmes à résoudre encore
• Problèmes d’interopérabilité– RMI et Corba en Java– entre le monde Microsoft et le reste
• Arrivée des Web Services : la solution ?
• Les composants encore nouveaux….– les Enterprise Java Beans – Corba Components– et aussi C# et net
![Page 73: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/73.jpg)
Les plus grosses difficultés
• Sont conceptuelles– Comment choisir les composants adaptés ?
(manque de sémantique, Web sémantique) – Comment accepter plus de services ?
(propriétés non fonctionnelles)
Etre plus architecte que programmeur ….
![Page 74: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/74.jpg)
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 comparerIdentifier les points communsInteropérabilité : XML une solution suffisante ?
![Page 75: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/75.jpg)
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é ....)
![Page 76: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/76.jpg)
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 middlewaresgénériques (Jonathan, PolyOrb, ...)Avoir une approche architecturale ?
des design patternsFaire interopérer des middlewares existants?
M2M
![Page 77: Objets Distribués et Composants Les applications actuelles et futures Cours ESSI3 SAR5](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d81497959293b8bb2c1/html5/thumbnails/77.jpg)
L’avenir ?
Après les approches par composants,des middlewares au dessus de JMS
Une réflexion de plus haut niveau poursortir les schémas communsextérioriser quand et comment on les utilise
ne pas confondre les problèmes avec XML