Rhum Un ORB réactif Laurent Hazard FT R&D DTL/ASR 22/02/02.

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes d’exploitation
Advertisements

Introduction aux environnements répartis
Réflexivité et réseaux d’ information
Le mécanisme des exceptions
Retour sur RMI.
1 Plan de lenseignement Cours Introduction au réseau via les objets distants (Application à RMI) Ce que cache RMI : programmation socket – mode connecté
ORB (1/2) ORB : Object Request Broker
Des sockets à RMI Programmation réseau versus programmation objet
Architecture CORBA réseau Objet Corba Application Serveur
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Objets Distribués Chronique d ’une invasion annoncée
Module SI4 Applications réparties
Des sockets à RMI. Pourquoi ? Maturation de la technologie orientée objet –ADA, Modula –Smalltalk, C++, Java Maturation des communications Client- Serveur.
Introduction aux applications réparties
TP 7.1 synchronized et join Écrire un programme Java qui crée 1000 threads et maintient un compteur nb du nombre de threads créés jusque-là. Le thread.
Object Management Architecture (OMA)
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Etude des Technologies du Web services
XML-Family Web Services Description Language W.S.D.L.
Javascript les spécificités du langage - Partie 6 -
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Java Remote Method Invocation (RMI)
Rennes, le 18 septembre 2006 Support du paradigme maître-travailleur dans les applications à base de composants Tâche 2.2 Hinde Bouziane Réunion LEGO.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
CAT 2000 LES MIDDLEWARES Présenté par : Tagmouti Siham Smires Ali
.Net Remoting.
Interopérabilité JOnAS - CORBA
Introduction à la programmation (Java)
Interfaces : comment classifier ?
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
Programmation concurrente
1 1 Corba avec Java et C Jean-Marc Vanel Transiciel - Sogeti.
PROGRAMMATION MULTI-TÂCHES (MULTITHREADING)
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Introduction au bus CORBA
COURS DE PROGRAMMATION ORIENTEE OBJET :
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Présentation de CORBA et de IIOP
JavaScript.
Présentation Interception Log2XMI XMI Perspectives CorbaTrace Florian Champalle Audrey Jaccard Etienne Juliot Nicolas Lemoullec Antoine Parra del Pozo.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
1 Extension du modèle de composants CORBA avec accès concurrent à des données partagées Travail réalisé par : Landry BREUIL PFE, ISIMA Encadrants : Gabriel.
Une architecture de sécurité hiérarchique, adaptable et dynamique pour la grille Arnaud Contes.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Les Réseaux Informatiques Clients & Serveurs Le protocole FTP Laurent JEANPIERRE DEUST AMMILoR.
Les sockets.
Programmation Réactive
Cours du 5 novembre.
Les RPC remote procedure call
France Télécom R&D Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Chapitre VII Techniques plus avancées à travers le concept de classe.
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
Les Servlets Présentation Cycle de vie Principe de fonctionnement
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Plate-forme de réalisation d’agents mobiles. Plan Introduction La plate-forme Voyager implantation Conclusion.
Architecture Client/Serveur
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
Initiation aux bases de données et à la programmation événementielle
Java Remote Method Invocation
Diagrammes de comportement Présentation. Diagramme de séquence  Permet de modéliser les envois de messages entre objets chronologiquement.  Modélisation.
Applications distribuées Introduction Jean-Jacques LE COZ.
Transcription de la présentation:

Rhum Un ORB réactif Laurent Hazard FT R&D DTL/ASR 22/02/02

Sommaire Motivation exemple et discussion DPE / ORB : plateformes réparties Présentation de Rhum et quelques détails dimplémentation –Retour sur lexemple Conclusion

Motivation Programmation réactive/synchrone –systèmes réactifs, interactions, //, synchro. Contexte de la programmation objet –Java, ORBs –interaction procédurale -> RPC –séquence dactions Carences, difficultés...

Exemple Un serveur public interface ServeurI { public int add (int a, int b); } Un client... ServeurI serveur = ;... res = serveur.add (x1, x2);

Requêtes parallèles Comment faire pour programmer :... ServeurI serveur1 = ; ServeurI serveur2 = ;... res = serveur1.add (x1, x2) ou serveur2.add (x1, x2) (le premier qui - y - arrive) ;... Parallèlisme

Requête gardée Comment faire pour programmer :... ServeurI serveur = ;... res = serveur.add (x1, x2) en moins de 3 secondes sinon 0;...Concurrence

Requêtes gardées en // Comment faire pour programmer :... ServeurI serveur1 = ; ServeurI serveur2 = ;... res = serveur1.add (x1, x2) si après 3 secondes pas de résultat, lancer serveur2.add (x1, x2) si après 2 sec. supp. serveur1 na pas rendu de résultat prendre celui de serveur2 si présent, sinon 0;

A coeur vaillant... En Java, pour les activités // et concurrentes, => on a les Threads ! Essayons : 3 sec. serveur1.add... serveur2.add... débloque (val) valide (val) débloque bloque démarre attend débloque (val) attend 2 sec. res =

Discussion... Faisable ? mouais... –pas simple –pas modulaire –pas « scalable » Faisable ? pas sûr... –a-t-on vraiment «programmé» ce quon voulait? sémantique dapproximation modèle dactivité implicite et... inconnu...

Discussion (2) Programmation ? –on reste en séquence... seule « garantie » !... requeteServeur1.start (); requeteServeur2.start ();... res = serveur.add (a, b); serveur.add (a, b, moi);... timer.start (); requeteServeur.start ();

Discussion (3) Valeur de retour (RPC) ou pas ? en partie, un problème (mais il y a aussi dautres problèmes) et cest quand même pratique. Si retour « asynchrone » => le client doit être aussi serveur …et alors là… : threads de l ORB, sans contrôle de lappli protection des accès concurrents

Discussion (4) Manque un modèle explicite –dactivité –dactivation pour les clients et les serveurs Manque une définition de contexte –pour y appliquer un modèle –commun avec les autres activités du système

Plateformes réparties... qqs mots, en général et en particulier !

Principes Contexte physiquement réparti Pas dhorloge globale –lasynchronisme rend les décisions difficiles (voire impossibles) –protocoles Nécessité dabstraire le contexte physique –constructions logiques : « modèle » –transparences / masquages

Historique RPC –sockets Programmation par objets –RM-ODP (iso – officiel !) –Corba (consortium – de fait !) –Java RMI (succès populaire !) –anecd. : DCOM (+)… ? (Algorithmique répartie) indép. des plateformes utilisée dans les protocoles ou les services

Objets dans contextes répartis Objet, Interface, Référence Export, Bind (implicite or explicite, 3 rd party) O2 O3 O1 Ref o = ; o.m (args); m *

ORBs Transparences –accès –localisation Contrôle –interfaces typées –services : nommage, persistence, migration, … O.m (...args...);

ORBs – 2 Qqs problèmes de base –« annonces » et « interrogations » en Corba, mot-clé « oneway » –parallèlisme et concurrence ?… exécution séquentielle appel de procédure pas de gestion dactivités : –création de threads –paramétrages de « timeout »

Exportation / Liaison Implicite / Explicite Référence –construire : Contexte de nommage NamingContext référence = collections de noms –lier : Usine à liaisons BindingFactory utilise un des noms de la référence

Liaison Binding Factory GIOP TCP ClientStub Session GIOP Session GIOP SkeletonServeur Liaison TCP

Jonathan Un ORB pour les télécommunications –ouvert –adaptable, configurable –basé sur le modèle ODP objet, interface, référence –implémenté en Java –2 « personnalités » : David, Jeremie

Rhum (1) Modèle dObjet Réactif... –Papier « Reactive Objects » –ROM/DROM appel procédural vs. message (send and forget) messages appels de méthodes de linterface objets exécutent des instants –domaine d exécution communication synchrone –au plus, 1 exécution de chaque méthode par instant

Rhum (2)... appliqué à des objets Java... –interface Java « normale » –méthodes obligatoirement « void... » - – OR.m (args);...dans une machine réactive « classique ». –des événements, des instants,... –exécution de comportements (pas de threads).

Rhum (3) Domaine (machine réactive) lieu dexécution des comportements lieu de diffusion des événements –une invocation ou un evt. de lenvironnement => un événement - diffusé - –présence des événements : intra-domaine : synchrone inter-domaine (ou environnement) : asynchrone possib. de groupage/synch. de plusieurs domaines

Binding Domaine D1 Domaine D2 0R1 0R3 01 0R2... o =... o.meth (x, y, this);... o =... o.meth (x, y);...

Rhum : personnalité Jonathan Référence dinterface réactive –sur un objet réactif –invocation uniforme –fournie par l infrastructure transparence daccès, à la localisation. Les domaines sont intégrés dans Jonathan –export : attacher un objet à un domaine –lier : fabriquer la chaine pour générer un événement pour lobjet dans son domaine

En résumé… O1 meth () … o = (ref sur O1) … o.meth ();... generate (evt) … dans un contexte quelconque… :

En détail… Remote Stub Reference SessionReq. Session Local Stub React. Insta. Reference Jonathan/Jeremie (mf, iiop, tcp/ip) ROA StubFact. RO JIOP « Serialization » (ep + id)

Mise en oeuvre (2) Spécification dobjet réactif langage réactif (à la « script réactif ») classe Java « passive » Codage de la plate-forme ORB Jonathan –StubFactory, ObjectAdaptor, binder JIOP comportement en Junior, domaine = Jr.Machine parsing de la spécif en JavaCC - JJTree

Spécif. dobjet réactif (1) Déclare/utilise une interface Utilise une instance « passive » Spécifie un comportement –exécute des instants (séquence, parallèle, etc.) –connaît des événements (attente, garde, etc.) méthodes de l interface « channel » environnement

Spécif. dobjet réactif (2) Exemple : public class Client extends RBase implements ClientI { ServeurI serveur; int res; public void setServ (ServeurI serv) {serveur = serv;} public void request (int a, int b) { if (serveur != null) serveur.addFor (a, b, this); } public void print (String msg) {System.out.println (msg);} public void receive (int resul) {print (" Client recoit :"+ resul);} } public class Serveur implements ServeurI { public void addFor (int a, int b, ClientI r) { r.receive (a+b); }

Spécif. dobjet réactif (3) Exemple: rclass RClient { interface /* ClientI */ { public void setServ (Serveur serv) public void request (int a, int b); public void receive (int resul); } uses Client; environment { ms; // signal de milliseconde } behavior { control loop {setServ (setServ::serv);}; stop end by setServ; || loop await request; (( {request (request::a, request::b);}; do await receive; {receive (receive::resul);}; until 1000 ms actual {print ("1 sec. et pas de réponse ! ")} end ) || ( stop; // pas de boucle instantanée )) end }

Lexemple revisité Une solution à notre petit problème :... do {request (serveur1, a, b);}; await Receive; until 3000 ms actual {request (serveur2, a, b);} end; do await Receive; {res = Receive::val;} until 2000 ms actual {res = ;} end;...

Remarques Le code est simple, clair et précis... Les instants doivent être de durée < 1 ms Le serveur doit aussi être un objet réactif si « addFor » dure, ce doit être sur plusieurs instants ou dans un autre domaine Les arguments possibles sont : –dun type de base (String, int, boolean, Object…) –des références dobjets réactifs

Bilan intégration dun modèle dactivités… réussi (?) 2 « langages » –traitement de données + comportement repose sur un Orb « classique » pour les comms.: –configuration des protocoles –dépend du système sous-jacent threads, sockets, etc... –gestion (complexe) de la concurrence prototype utilisé au sein de FT R&D => retours

Perspectives Nouveau modèle –2 sémantiques dinvocation possibles 1 événement ou 1 nouveau comportement spécification du « serveur » –possibilité de valeur de retour notion de rvoid usage par le « client » Meilleure intégration : desc. comp. + java Indépendance wrt ORB