Modélisation et Implémentation des Systèmes Complexes Agents mobiles



Documents pareils
Remote Method Invocation (RMI)

Remote Method Invocation en Java (RMI)

Plan. Programmation par agents. Un agent mobile C est quoi?

RMI le langage Java XII-1 JMF

Calcul Parallèle. Cours 5 - JAVA RMI

Remote Method Invocation Les classes implémentant Serializable

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

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

Conception de serveurs d'applications ouverts

Java - RMI Remote Method Invocation. Java - RMI

Programmation répartie RPC & RMI

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

Intergiciel - concepts de base

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

OpenPaaS Le réseau social d'entreprise

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

Threads. Threads. USTL routier 1

Synchro et Threads Java TM

OS Réseaux et Programmation Système - C5

Un ordonnanceur stupide

Corrigé des exercices sur les références

Software Engineering and Middleware A Roadmap

SSH, le shell sécurisé

2 Chapitre 1 Introduction

Création d un service web avec NetBeans 5.5 et SJAS 9

NFP111 Systèmes et Applications Réparties

Projet gestion d'objets dupliqués

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

CORBA haute performance

Auto-évaluation Programmation en Java

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

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

TP1 : Initiation à Java et Eclipse

Mobile OGSI.NET: Grid Computing on Mobile Devices

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

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

Introduction. Adresses

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

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Chapitre VI- La validation de la composition.

Le modèle client-serveur

Java et les bases de données

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

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)


Tutoriel de formation SurveyMonkey

How to Login to Career Page

Projet de programmation (IK3) : TP n 1 Correction

18 TCP Les protocoles de domaines d applications

Premiers Pas en Programmation Objet : les Classes et les Objets

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

CH.3 SYSTÈMES D'EXPLOITATION

Prise en compte des ressources dans les composants logiciels parallèles

Java Licence Professionnelle CISII,

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

Java DataBaseConnectivity

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

Introduction : les processus. Introduction : les threads. Plan

Patrons de Conception (Design Patterns)

Exécutif temps réel Pierre-Yves Duval (cppm)

Installer le patch P-2746 et configurer le Firewall avancé

Messagerie asynchrone et Services Web

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

Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

CORBA. (Common Request Broker Architecture)

VTP. LAN Switching and Wireless Chapitre 4

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

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

Web Tier : déploiement de servlets

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Introduction aux «Services Web»

Architectures n-tiers Intergiciels à objets et services web

NSY102. Conception de logiciels Intranet Introduction

Programmation client-serveur sockets - RPC

Master IAC Philippe Caillou DÉVELOPPEMENT DE SMA. Cours 1b

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

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)

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

NOTICE INSTALLATION. ARCHANGE Simplex Office N&B/Couleur KONICA MINOLTA BUSINESS SOLUTIONS FRANCE

Plan. Department of Informatics

Programmation Objet Java Correction

Services OSI. if G.Beuchot. Services Application Services Présentation - Session Services Transport - Réseaux - Liaison de Données - Physique

Une introduction à la technologie EJB (2/3)

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Une introduction à Java

NetCrunch 6. Superviser

Android et le Cloud Computing

SERVEUR DÉDIÉ DOCUMENTATION

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Transcription:

Modélisation et Implémentation des Systèmes Complexes Agents mobiles A. Cardon, C. Bertelle et D. Olivier LIH - Laboratoire d Informatique du Havre DEA Informatique Théorique et Applications Ecole Doctorale SPMI - Rouen/Le Havre 0-0

Année 2003/2004 0-1

5.1 Agents distribués 5.2 Code mobile 5.3 Exemples 5 Les Agents mobiles 1- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.1 Agents distribués Agents coopératifs, non mobiles. Le placement est statique, les agents s éxécutent sur la même machine jusqu à leur mort. Une plateforme (répartie) avec des agents qui coopérent grace aux communications (distantes) ; Plusieurs plateformes homogènes ; Plusieurs plateformes hétérogènes interopérabilité avec communication entre agents. 2- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Il faut faire attention, nous nous plaçons dans un contexte d agent intelligent. L agent est alors considéré comme (au moins) une entité autonome, sociale et réactive et pro-active. Autonomie : capacité de l agent à fonctionner sans intervention directe d un tiers et il contrôle ses propres actions et son état interne ; Socialité : capacité de l agent d interagir avec les autres quand la situation l exige, pour compléter ses tâches ou aider les autres ; Réactivité : capacité de l agent à percevoir son environnement et interagit avec lui ; Pro-activité : capacité de l agent sur sa propre initiative de se fixer des buts pour atteindre ses objectifs. Son comportement est opportuniste en fonction de son état interne sans intervention d un tiers. L interactivité se fait au moins entre deux agents en : 2-1

communiquant directement ; par l intermédiaire d un autre agent ; en agissant sur l environnement. La répartition peut avoir plusieurs formes : Une plate-forme (répartie) avec des agents qui coopérent grace aux communications (distantes). Dans ce cas nous pouvons avoir à faire à des mécanismes transparents au niveau de la plateforme. Plusieurs plate-formes homogènes ; Plusieurs plate-formes hétérogènes interopérabilité avec communication entre agents. 2-2

5.2 Code mobile C est la capacité de déplacer des composants logiciels d un système distribué d un nœud du système à un autre. L initiateur envoie s exécuter ses procédures à l endroit où se trouve les données. 3- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2 Code mobile Modéles d exécution les paradigmes : 5.2.1 Code à la demande ; 5.2.2 Echange de message ; 5.2.3 Code référençable ; 5.2.4 Evaluation distante ; 5.2.5 Agents mobiles. 4- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.1 Code à la demande Code on demand, cela ressemble à du téléchargement. Il y a deux sens possibles à ce téléchargment : De façon imposée par un nœud du système distribué à un autre nœud ; A la demande. 5- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

De façon imposée par un nœud du système distribué à un autre nœud ; (ex : m.à.j, fichier Postscript!) A la demande. (m.à.j, applets Java) 5-1

Exécution D. Olivier - LIH 5.2.1 Code à la demande Ressource Site demandeur Site serveur demande code 6- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Le site recepteur reçoit le code du serveur. Il exécute alors le code localement. 6-1

5.2.1 Code à la demande Mécanisme asynchrone ; Gros grain de distribution ; Utilisable dans les réseaux de grande échelle. 7- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.1 Code à la demande Appelant Réseau Appelé Application Client HTTP Serveur HTTP Serveur Demande d import de la classe Liaison de classe requete ^ (fichier *.class) Attente Réponse (la classe) interprétation de la requete ^ Chargement de la classe Retourne la classe classe Java Exécution FIG. 1 Fonctionnement d une applet java 8- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.2 Passage de message Mécanisme souple et puissant ; Obligation de prendre en compte au niveau du programme de : Les communications ; La synchronisation. Sockets Unix ; Mécanisme de base dans Mach et Chorus (OS) ; Utilisé pour les applications parallèles ; S appuie dans certain cas sur PVM et MPI (standard). 9- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Attention dans ce cas les messages ne contiennent pas obligatoirement du code. Ils peuvent être constitués de données et eventuellement de code. 9-1

5.2.2 Passage de message Appelant Réseau Appelé client serveur Etat initial Envoi Réception Etat initial Automate d état Réception Envoi Automate d état Etat final Processus client Processus serveur en attente FIG. 2 Echange de messages 10- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.3 Code référençable Appel de procédures à distance (RPC) ; Invocation d objets à distance, objets distribués (RMI, CORBA) ; HTTP et CGI ; 11- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.3 Code référençable Ressource Site cible Site demandeur code Appel de procédure ou de méthode Retour Traitement FIG. 3 Principe du code référençable 12- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.3 Code référençable Caractéristiques courantes Synchrone ; Grain fin ; Interface statique (le plus souvent) ; Réseaux locaux (le plus souvent). 13- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.3 Code référençable ftp telnet rsh rcp rlogin NIS NFS Application XDR Présentation RPC Session TCP/UDP Transport IP Réseau Ethernet Liaison Ethernet Physique FIG. 4 RPC dans le modèle OSI 14- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.3 Code référençable Machine cliente Machine serveur Process appelant Exécution de la procédure résultat Talon client arguments arguments Talon serveur résultat Débalage Embalage Débalage Embalage Messages requètes Messages réponses Réseau FIG. 5 Appel de procédure à distance 15- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.3 Code référençable Les Remote Procedure Call Permet à un serveur de définir une procédure qu un programme sur un client peut appeler ; Chaque procédure admet des paramètres par valeur et retourne un résultat ; Les informations échangées doivent être représentées sous une forme standard (ex : XDR external Data Representation). Ex : NFS. 16- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Invocation d objets à distance 5.2.3 Code référençable Appelant Souche Réseau Squelette Appelé Invocation de référence méthode attributs Emballage de référence méthode attributs Attente Déballage de référence méthode attributs Liaison dynamique référence invocation d objet méthode attributs Retour du résultat Déballage résultat Emballage résultat résultat Espace de désignation uniforme des objets (ORB) FIG. 6 Objets distribués 17- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

L ORB permet l échange de requêtes entre les objets de façon transparente à la localisation et l implémentation des objets. L envoi d une requête est réalisée par le stub, souche d opération qui crée un message correspondant à cette requète, la reception du résultat est également assurée par le stub. Le squelette d opération (skeleton) reçoit le message qui encode la requête et la transforme en appel d implementation et récupère le résultat pour les transmettre à l appelant par l ORB. 17-1

Invocation d objets à distance 5.2.3 Code référençable Mécanisme de courtage de requètes entre objets ; Mécanisme utilisé dans RMI, CORBA et COM/OLE ; Extension des RPC ; Construit sur un ORB. 18- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.3 Code référençable HTTP et CGI Navigateur Client Web requete ^ POST(prgm CGI, document d entrée) Serveur HTTP interprétation de la requete ^ Lancement du script Execution du script reponse du serveur document de sortie Document de sortie Affichage du document de sortie FIG. 7 Protocole HTTP et script CGI 19- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Le serveur en général écoute les requètes des clients sur le port 80 de TCP et il emet un document vers le navigateur de la façon suivante : Le navigateur effectue une connection TCP sur le port HTTP du serveur ; Le serveur accepte ; Le navigateur emet sa requête ; Le serveur interprète la requête ; Le serveur lance et execute le script CGI ; Le résultat du script est un document HTML qui est expédié au navigateur ; Le serveur coupe la connection ce qui signifie la fin du document ; Durant la reception le navigateur interprète le fichier HTML et l affiche. 19-1

5.2.4 Evaluation distante Servlets Synchrone Gros grain de distribution, code et interface définis par le client ; Réseau de grande échelle (Internet). 20- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

D. Olivier - LIH 5.2.4 Evaluation distante Site demandeur Site serveur code Exécution Ressource FIG. 8 Principe de l évaluation à distance 21- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.4 Evaluation distante Appelant client Réseau Appelé Evaluation Emballage de expression expression Déballage expression Evaluation de l expression Attente Retour du résultat Déballage résultat Emballage résultat FIG. 9 Servlets 22- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

CGI vs Servlets. Les programmes CGI ainsi que les servlets sont capables de générer des données dynamiques pour le client. Cependant les servlets peuvent : Continuer à s exécuter en tâche de fond une fois le traitement de la requête fini, puis reprendre sur une nouvelle requète. De plus un servlet est capable de gérer des threads et donc traiter plusieurs requêtes simultanées. Interagir avec une applet. S exécuter sur la machine cliente. Agent primitif?!! 22-1

Exécution D. Olivier - LIH 5.2.5 Agents mobiles Ressource Site initiateur Site serveur Agent code FIG. 10 Principe des agents mobiles 23- DEA ITA - Modélisation et Implémentation des Systèmes Complexes Exécution Ressource

5.2.5 Agents mobiles Quel principe? 1. L exécution débute sur un site ; 2. Le code migre ainsi que ses données sur un site distant ; 3. Reprise de l exécution du code. 24- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.5 Agents mobiles Quels agents? Agents mobiles Unité d execution mobile autonome possédant ses propres ressources. Agents intelligents Système informatique, situé dans un environnement, et qui agit d une façon autonome et flexible pour atteindre les objectifs pour lequel il a été conçu. 25- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Agents intelligents implémentés par des agents mobiles! 26- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

1. Agent mobile : Agent : objet actif succeptible de communiquer potentiellement avec d autres agents ; Mobile : il se déplace en fonction de ses besoins et il peut suivre dans certains cas un itinéraire. Processus, incluant du code et des données, pouvant se déplacer entre des unités d exécution pour réaliser une tâche. 2. Agent intelligent : l agent est capable d agir sur son environnement à partir des entrées sensorielles qu il reçoit de ce même environnement. autonome : l agent est capable d agir sans intervention d un tiers (humain ou agent) et contrôle ses propres actions ainsi que son état interne. flexible : l agent est réactif ; 26-1

proactif ; social. 3. Agent intelligent mobile 1 + 2 26-2

Les types d agents mobiles : Agents de notification ; Agents itinerants ; Agents d adaptation. 5.2.5 Agents mobiles 27- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Agents de notifications, ils attendent une information ou un événement et préviennent l usager ou déclenchent une action (exemple : gestion d un portefeuille d actions, surveillance de connection ou d activité sur une machine... ). Agents itinerants, ils réalisent une suite d interactions avec les serveurs. On privilégie, par exemple, les accès locaux. Par exemple, l agent va consulter un premier serveur qui lui fournit une liste de livres concernant les agents et il va ensuite consulter un deuxième serveur qui lui fournit une liste de prix. L agent réalise ensuite la jointure. Agents d adaptation, ils étendent les fonctions du service, ou s adapte aux besoins spécifiques des clients. Par exemple, un client demande un document à un serveur et lui fournit également un algorithme de compression et de chiffrement. L agent de compression et de cryptage s exécute sur le serveur et ren- 27-1

voie au client le document chiffré et compressé. L adaptation peut concerner également une répartition de la charge. 27-2

5.2.5 Agents mobiles Quelle mobilité? 1. mobilité faible (non transparente) ; 2. mobilité forte (transparente). 28- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

1. Mobilité faible. L agent doit préparer sa migration en sauvegardant son état dans des variables et une fois sa migration effectuée, il doit restaurer son état et reprendre son exécution, en général à un nouveau point du programme. 2. Mobilité forte. L agent après sa migration repart dans le même état et exactement au même point dans son code que celui avant migration. 28-1

5.2.5 Agents mobiles Service demandeur code migration d un agent Service récupération des résultats Service FIG. 11 Exemple de scénario de mobilité d un agent 29- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

L agent est activé, il exécute sa mission en migrant et retourne sur le site demandeur. La connection a lieu uniquement durant la phase de migration. 29-1

5.2.5 Agents mobiles Quelques caractéristiques Opérations à gros grains, code défini par l utilisateur ; Connection uniquement durant la phase de migration asynchronisme, le site de départ peut se deconnecter ; Utilisable dans le cadre des réseaux de grande échelle migration où se trouvent les données ; accepte les latences ; reduit le traffic de données. 30- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Localisation explicite migration proactive : l agent décide où aller et quand ; migration réactive : réponse à une requête externe 31- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.5 Agents mobiles Agents mobile vs. migration de processus Migration de processus C est le mouvement d une entité en cours d éxécution sur une machine distante ; Utilisé pour la répartition de charge, le partage d information, la tolérance aux pannes ; Mécanisme puissant mais complexe à metre en œuvre (hétérogénéité, capture d état... ) ; 32- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.5 Agents mobiles Agents mobile vs migration de processus Migration de processus Agents mobiles But de la migration Partage de charge, Naviguer en fct. de l appli., survivance aux arrêts supporter des op. déconnectées. Initiative Système d exploitation Application Prise en compte Implicite Explicite de la répartition Portée LAN WAN 33- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.5 Agents mobiles Quelle infrastructure? L agence Environnement local pour accueillir les agents et leur permettre de réaliser leur tâches ; 34- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Elle fournit un support pour : L exécution (allocation de ressources par le runtime) ; La communication agents-serveurs (locaux ou distants) ; La migration (transfert d état) ; La désignation et la localisation des agents ; Le contrôle de l utilisation des ressources ; La sécurité. 35- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.5 Agents mobiles Quelle infrastructure? Admission ; Reception de l agent (code, état, attributs) ; Déballage des attributs liés à la sécurité. 36- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Allocation de ressources Vérification du code ; Compilation dynamique ; Interprétation (directe Tcl,Scheme ou indirecte Java) ; 1 agent = 1 processus ou 1 thread ; Autres attributs (besoins mémoires, limitation (durée de vie... )). 37- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Action en cas d erreurs rejet ; notification à une entité ; routage vers une autre agence ; 38- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Compilation dynamique verif facile, optimisation locale par contre durée de compil, code source visible, dépendance machine. 38-1

5.2.5 Agents mobiles Communication, quels sont les problèmes et comment les résoudre? Avec des services (locaux ou non), d autres agents (locaux ou non), le propriétaire ; Utilisation de mécanisme type RPC ou objets distribués ; 39- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Service de localisation local - Info sur les agents et services ; distant - Info sur les agents et services ; naming services (CORBA, DCE) peuvent être utilisés. Communication avec le propriétaire identifié par les attributs Synchrone / Asynchrone (en Gal) (boîte aux lettres) ; 40- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Communication entre agents locaux/distants ; synchrone/asynchrone ; diffusion multicast local, distant, global. 41- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Communication avec un service ou un agent distant Communication distante ou migration? Notion de coûts, compromis entre coûts de communication et migration Role de l agent, du propriétaire de l agence dans la décision 42- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.5 Agents mobiles La migration 3 étapes Sérialisation du code, des données et de l état d exécution ; Transfert ; Désérialisation. 43- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Migration d objets ou de processus Pb de l état (dépend de la plateforme - pile, état des registres -) ; Le système décide quand et où! état quelconque. 44- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Migration d agents L agent décide quand et où Quand Pour faire autre chose, se rapprocher d une ressource, minimiser les communications, s agréger, augmenter ses performances... Où Choix statique (liste d hôtes à visiter) Choix dynamique (en fonction de son état, des résultats, des dispo... ) 45- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Que fait l agence? Suppression de l agent de la liste locale ; Emballage de l agent et envoi sur le réseau ; Le système d allocation recupère les ressources. 46- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.5 Agents mobiles La migration et le problème des ressources Modification des liaisons aux ressources ou migration de la ressources ; Types des ressources Transférables ; libres (ex : fichiers) ; fixe (ex : BD). Non transférables (ex : imprimantes) ; 47- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Pb relocalisation des ressources, reconfiguration des liaisons (bindings) ; Mecanismes : perte de la liaison ; déplacement de la ressource ; copie de la ressource ; référence réseau, nouvelle liaison. 48- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.5 Agents mobiles Ressource Agent 1 Agent 2 Avant migration Après migration Déplacement Source Source Destination Référence réseau Source Source Destination Copie Source Source Destination Nouvelle liaison Source Destination Source Destination FIG. 12 Mecanisme de liaison aux ressources 49- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.2.5 Agents mobiles Contrôle et utilisation des ressources Au niveau des agents Durée de vie ; Nombre de migration ; Nombre maximum de clones ; Historique de migration. 50- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Au niveau des agences ou de l environnement d exécution Nombre max d agents ; Gestion des accès fichiers, écran... Utilisation CPU, mémoire... Liste de contrôle d accès (provenance (lieu, propriétaire)). 51- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.3 Exemples Avec Java Aglets(IBM) http ://sourceforge.net/projects/aglets Concordia (Mitsubishi) http://www.meitca.com/hsl/projects/concordia Voyager (Object Space) http://www.objectspace.com/products/voyager MOA (OSF/OpenGroup) http://www.osf.org/ri/java/moa Autres environnement (Tcl, Python... ) D Agents (Dartmouth College) http://agent.cs.dartmouth.edu/software/agent2.0/ Ara (Université de Kaiserslautern) http://wwwagss.informatik.uni-kl.de/projekte/ara/index_e.html Tacoma (Universite de Tromsø et Cornell) http://www.tacoma.cs.uit.no/ 52- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.3 Exemples 5.3.1 Code mobile en Java 5.3.2 Aglets 5.3.3 Une plate-forme à votre choix! 53- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.3.1 Code mobile en Java Java + sérialisation + RMI code mobile ; On définit : Un code mobile donc sérialisable ; Un serveur qui met à disposition ce code mobile ; Le serveur est un objet distribué RMI ; Un client (eventuellement) distant. 54- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.3.1 Code mobile en Java Agent code mobile ; AgentFactory interface de l objet serveur distribué, invoquée par le client et les appels de méthodes sont gérés par RMI ; AgentFactoryImpl implémentation de l interface, crée une instance de Agent et l envoie sur demande au client ; AgentClient client du serveur, fait migrer l objet mobile Agent. 55- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.3.1 Code mobile en Java La classe Agent package mobile; import java.net.*; public class Agent implements java.io.serializable { int donnee; String origine; public Agent() throws UnknownHostException{ origine = InetAddress.getLocalHost().toString(); } public void calcule(){ donnee += 113; } public int getdonnee(){ return donnee; } public void setdonnee(int donnee){ this.donnee = donnee; } public String douvienstu(){ return origine; } public String ouestu() throws Exception{ return InetAddress.getLocalHost().toString(); } } 56- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.3.1 Code mobile en Java La classe AgentFactory package mobile; import java.rmi.*; public interface AgentFactory extends Remote { public Object getagent() throws Exception; public void setagent(object a) throws RemoteException; } On fait migrer des Object généricité ; Il n est pas nécessaire de connaître la classe agent. 57- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.3.1 Code mobile en Java La classe AgentFactoryImpl package mobile; import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.*; public void setagent(object a) throws RemoteException{ this.data += ((Agent)a).getDonnee(); } public class AgentFactoryImpl extends UnicastRemoteObject implements AgentFactory { int data = 0; public AgentFactoryImpl() throws RemoteException{ super(); } public Object getagent() throws Exception{ Agent a = new Agent(); a.setdonnee(this.data); return a; } public static void main(string[] argv){ try{ LocateRegistry.createRegistry(1099); System.out.println("Reg. RMI lancé"); LocateRegistry.getRegistry(1099).bind( "AgentFactory", new AgentFactoryImpl()); System.out.println( "Agent factory enregistré"); } catch(exception e) { System.out.println( "Exception interceptée : " + e); e.printstacktrace(); } } } 58- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.3.1 Code mobile en Java La classe AgentClient package mobile; import java.rmi.*; import java.rmi.server.*; import java.net.*; import java.lang.reflect.*; public class AgentClient{ public static void main(string[] argv){ try{ String url = "rmi://"+argv[0]+":"+argv[1]; System.setSecurityManager( new RMISecurityManager()); AgentFactory af = (AgentFactory) Naming.lookup(url+"/AgentFactory"); Object a = af.getagent(); Class cl = a.getclass(); Method ou = cl.getmethod("douvienstu", null); System.out.println( Je viens de + ou.invoke(a,null)); ou = cl.getmethod("ouestu", null); System.out.println( Je suis en + ou.invoke(a,null)); Method getdonnee = cl.getmethod("getdonnee", null); System.out.println("Donnee avant calcul:" + ((Integer)getDonnee.invoke( a, null)).intvalue()); cl.getmethod("calcule", null).invoke(a, null); getdonnee = cl.getmethod("getdonnee", null); System.out.println("Donnée après calcul : " + ((Integer)getDonnee.invoke( a, null)).intvalue()); af.setagent(a); }catch (Exception e) { System.out.println("Excep. interceptée " + e); e.printstacktrace(); } }} 59- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.3.1 Aglets Agents Applets ; IBM Japon 96 ; Porté en Java 2 depuis que c est en Open Source ; Aglet = objet Java comportant un flot d exécution et des méthodes pour la mobilité ; Contexte = espace d adressage sur une machine pouvant abriter un ensemble d aglets ; Proxy = protège l accès direct, gère la localisation 60- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

L aglet c est un agent mobile qui se déplace de machine en machine avec son code et ses données ; Le contexte c est l agence. C est donc un objet statique lié à une plate-forme. Il permet de gérer les aglets en cours d exécution et d assurer la sécurité de l hôte. Le proxy C est le représentant, en fait de l Aglet. Il protège l Aglet vis à vis de ses méthodes publiques et masque la localisation réelle de l Aglet. 60-1

5.3.2 Aglets Aglet PROXY Message PROXY Aglet Aglet Context FIG. 13 Aglets 61- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

5.3.2 Aglets Contexte de A dispatch Contexte de B dispose clone Aglet retract Aglet create desactivate activate mémoire secondaire class FIG. 14 Cycle de vie d une aglet 62- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Création, elle s effectue dans le cadre d un contexte. A sa création l Aglet se voie attribuer un identifiant unique AgletIdentifier et à un objet d accès AgletProxy ; Clonage, il y a duplication de l Aglet dans un contexte. L Aglet cloné à un nouvel identifiant et il repart d un état initial i.e il ne conserve pas le thread d exécution. L envoi, l Aglet migre du contexte A vers le contexte B. Rétraction, l Aglet est retiré de son contexte afin de l insérer dans le contexte qui invoque l opération. Activation et désactivation, l Aglet peut être stocké momentanément sur disque et réactivé à l expiration d un timeout ou d un événement externe. Suppression fin de vie de l Aglet, son exécution est interrompue et il est supprimé de son contexte d exécution. 62-1

5.3.2 Aglets Un Aglet c est donc : Une classe qui dérive de la classe Aglet ; Un graphe d objets sérialisable ; Des méthodes prédéfinies pour la gestion des Aglets ; - Aglet.dispatch(URL url) - Aglet.deactivate(long time) - Aglet.clone() - getagletcontext() 63- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Des méthodes à définir : - Aglet.onCreation(Object init) - Aglet.run() - Aglet.handleMessage(Message message) - Aglet.onDisposing() 64- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

Programmation d un Aglet public class AgletCoucou extends Aglet { public void oncreation(object init) { System.out.println( j existe ); } public void run() { System.out.println( coucou ); } public boolean handlemessage(message message) { if (message.samekind( Dit coucou )) { System.out.println( coucou ); return true; } return false; } public void ondisposing() { System.out.println( Adieu monde cruel ); } } 65- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

public void oncreation(java.lang.object init) Initializes the new aglet. This method is called only once in the life cycle of an aglet. Override this method for custom initialization of the aglet. Parameters: init - the argument with which the aglet is initialized. public void run() Is the entry point for the aglet s own thread of execution. This method is invoked upon a successful creation, dispatch, retraction, or activation of the aglet. public boolean handlemessage(message message) Handles the message form outside. Parameters: msg - the message sent to the aglet Returns: true if the message was handled. Returns false if the message was not handled. If false is returned, the MessageNotHandled exception is thrown in the FutureReply.getReply and AgletProxy.sendMessage methods. public boolean samekind(java.lang.string k) Checks if the message has same kind as given string. public void ondisposing() Is called when an attempt is made to dispose of the aglet. Subclasses may override this method to implement actions that should be taken in response to a request for disposal. Throws: java.lang.securityexception - if the request for disposal is rejected. 65-1

5.3.2 Aglets Proxy d un Aglet : c est le moyen d appeler une méthode de l Aglet (déplacer, envoyer un message... ) ; cela masque la localisation de l Aglet ; cela protège l Aglet sur ses méthodes. c est donc un objet intermédiaire qui permet la manipulation de l Aglet. 66- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

On obtient un proxy d une Aglet par : - AgletContext.getAgletProxies() - AgletContext.getAgletProxy(AgletID) ou en adressant un contexte (URL) à distance ou en le recevant dans un message. 67- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

public java.util.enumeration getagletproxies() Gets an enumeration of all aglets in the current context including deactivated aglets. Returns: a list of proxies. public AgletProxy getagletproxy(agletid id) Gets a proxy for an aglet in the current context. The selected aglet is specified by its identity Parameters: id - the identity of the aglet. Returns: the proxy. 67-1

5.3.2 Aglets Message Il est composé de 2 champs, le type String et un objet Object Il peut être envoyé de 3 façons différentes : synchrone AgletProxy.sendMessage(Message msg) asynchrone AgletProxy.sendAsyncMessage(Message msg) asynchrone sans attente de résultat AgletProxy.sendOnewayMessage(Message msg) 68- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

public Message(java.lang.String kind, java.lang.object arg) Constructs a message with an argument value. Parameters: kind - a kind of this message. arg - an argument of this message. public java.lang.object sendmessage(message msg) throws InvalidAgletException, NotHandledException, MessageException Sends a message in synchronous way. This waits for finishing the message handing. Parameters: msg - a message to send. Returns: the result object if any. null if not. public FutureReply sendasyncmessage(message msg) throws InvalidAgletException Sends a message in asynchronous way. Parameters: msg - a message to send. Returns: a future object that will give you the reply of the message. public void sendonewaymessage(message msg) throws InvalidAgletException Sends a oneway message to the aglet. No acknowledgement will be sent back to the sender. Parameters: msg - a message to send. 68-1

5.3.2 Aglets Programmation de la mobilité Programmation basée sur des événements gestion d événement de mobilité associée à un Aglet interface MobilityListener définies par le programmeur - MobilityListener.onArrival(MobilityEvent event) - MobilityListener.onDispatching(MobilityEvent event) - MobilityListener.onReverting(MobilityEvent event) 69- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

class mongestionnaire implements MobilityListener { public void ondispatching(mobilityevent evenement) { System.out.println( Je m en vais ); } public void onreverting(mobilityevent evenement) { System.out.println( Je reviens au bercail ); } public void onarrival(mobilityevent evenement) { System.out.println( Je suis arrivé ); } } public class AgletCoucou extends Aglet { public void oncreation(object init) { System.out.println( j existe ); MobilityListener gestionnaire = new mongestionnaire(); addmobilitylistener(gestionnaire); } //etc } 70- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

public void onarrival(mobilityevent event) Invoked just after the aglet arrived at the destination. public void ondispatching(mobilityevent event) Invoked when the aglet is attempted to dispatch. public void onreverting(mobilityevent event) Invoked when the aglet is retracted. public final void addmobilitylistener(mobilitylistener listener) Adds the specified mobility listener to receive mobility events from this aglets 70-1

5.3.2 Aglets Programmation d un contexte Programmation basée sur les événements, interface ContextListener événements concernant le contexte - ContextListener.contextStarted(ContextEvent evt) - ContextListener.contextShutdown(ContexEvent evt) événements concernant les aglets - ContextListener.agletCreated(ContextEvent evt) - ContextListener.agletCloned(ContextEvent evt) - ContextListener.agletArrived(ContextEvent evt) - ContextListener.agletDispatched(ContextEvent evt) - ContextListener.agletReverted(ContextEvent evt) - ContextListener.agletStateChanged(ContextEvent evt) 71- DEA ITA - Modélisation et Implémentation des Systèmes Complexes

public void contextstarted(contextevent ev) Called when the context is started public void contextshutdown(contextevent ev) Called when shutting down public void agletcreated(contextevent ev) Called when an aglet has been created public void agletcloned(contextevent ev) Called when an aglet has been cloned public void agletarrived(contextevent ev) Called when an aglet has arrived public void agletactivated(contextevent ev) Called when an aglet has been activated public void agletdispatched(contextevent ev) Called when an aglet has been dispatched public void agletreverted(contextevent ev) Called when an aglet has been reverted. public void agletstatechanged(contextevent ev) Called when the state of an aglet has changed. 71-1

5.3.2 Aglets messages : communication synchrone et asynchrone ; migration proactive Dispatch(), notion d itinéraire ; migration réactive Retract() ; Mobilité faible : sérialisation du code et des données, mais pas de l état du thread. L exécution reprend au début. 72- DEA ITA - Modélisation et Implémentation des Systèmes Complexes