these doctorat une architecture de securité
these doctorat une architecture de securité
these doctorat une architecture de securité
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Section 4.3. Sémantique <strong>de</strong>s communications<br />
4.3 Sémantique <strong>de</strong>s communications<br />
L’instanciation d’un objet actif retourne un objet polymorphiquement compatible avec le type<br />
<strong>de</strong> la classe d’origine. L’objet retourné est en fait <strong>une</strong> sous-classe <strong>de</strong> la classe d’origine. Cela nous<br />
permet <strong>de</strong> rendre transparente la distribution <strong>de</strong>s objets actifs. Un objet java peut ne pas avoir<br />
conscience qu’il s’adresse à un objet distant, il fera <strong>de</strong>s appels sur les métho<strong>de</strong>s publiques <strong>de</strong><br />
l’objet actif comme si ce <strong>de</strong>rnier était un objet java standard et local à la machine virtuelle.<br />
La communication entre objets actifs est assurée par un échange <strong>de</strong> messages. Les messages<br />
sont <strong>de</strong>s objets java sérialisables. On peut les comparer aux paquets utilisés par le protocole TCP.<br />
En effet, ces messages contiennent (1) <strong>une</strong> partie servant à leur routage par les divers éléments<br />
<strong>de</strong> la bibliothèque, (2) <strong>une</strong> partie contenant les données <strong>de</strong>vant être communiquées à l’objet distant.<br />
Si les possibilités <strong>de</strong> faire <strong>de</strong>s appels <strong>de</strong> métho<strong>de</strong>s restent les mêmes, la sémantique <strong>de</strong><br />
communication associée à <strong>une</strong> métho<strong>de</strong> variera selon la signature <strong>de</strong> cette <strong>de</strong>rnière.<br />
Le tableau 4.1 présente les différentes sémantiques <strong>de</strong> communication selon les différentes signatures<br />
<strong>de</strong>s métho<strong>de</strong>s.<br />
tel-00239252, version 1 - 5 Feb 2008<br />
Sémantique Signature <strong>de</strong> la métho<strong>de</strong> Nombre <strong>de</strong> messages échangés<br />
One-way<br />
Synchrone<br />
Asynchrone<br />
La métho<strong>de</strong> n’a pas <strong>de</strong> valeur <strong>de</strong> retour<br />
(void) et ne lève pas d’exception.<br />
– La métho<strong>de</strong> retourne un objet non<br />
reifiable : type primitif ou classe final,<br />
– La métho<strong>de</strong> peut lever <strong>une</strong> exception<br />
: on doit bloquer l’appelant<br />
pour éviter qu’il ne sorte du bloc<br />
try/catch<br />
Ne correspond ni au cas synchrone, ni<br />
au cas one-way : types réifiables, auc<strong>une</strong><br />
exception<br />
Un message envoyé <strong>de</strong> l’appelant vers<br />
l’appelé.<br />
Deux messages échangés, un lors<br />
<strong>de</strong> l’appel <strong>de</strong> métho<strong>de</strong>, le <strong>de</strong>uxième<br />
lorsque la métho<strong>de</strong> a été exécutée afin<br />
<strong>de</strong> renvoyer le résultat <strong>de</strong> l’appel <strong>de</strong><br />
métho<strong>de</strong>. La thread <strong>de</strong> l’appelant est<br />
bloquée jusqu’à réception du résultat<br />
<strong>de</strong> l’appel <strong>de</strong> métho<strong>de</strong>.<br />
Deux messages échangés, un lors<br />
<strong>de</strong> l’appel <strong>de</strong> métho<strong>de</strong>, le <strong>de</strong>uxième<br />
lorsque la métho<strong>de</strong> a été exécutée afin<br />
<strong>de</strong> renvoyer le résultat <strong>de</strong> l’appel <strong>de</strong><br />
métho<strong>de</strong>.<br />
TAB. 4.1 – Signature <strong>de</strong>s métho<strong>de</strong>s et sémantique <strong>de</strong>s appels<br />
Dans tout échange <strong>de</strong> messages, il existe <strong>une</strong> phase <strong>de</strong> ren<strong>de</strong>z-vous lors <strong>de</strong> l’envoi du message.<br />
Ce ren<strong>de</strong>z-vous assure à l’appelant que le message a été correctement délivré à l’objet actif appelé<br />
et qu’il a été placé dans la file d’attente <strong>de</strong>s requêtes que l’objet actif appelé doit servir.<br />
4.4 Migration <strong>de</strong>s activités<br />
La mobilité d’<strong>une</strong> application est un paradigme <strong>de</strong> programmation qui consiste à donner la<br />
possibilité aux divers éléments d’<strong>une</strong> application <strong>de</strong> changer <strong>de</strong> localisation en cours d’exécution<br />
[60]. La migration permet la migration <strong>de</strong>s objets actifs d’un noeud vers un autre nœud. La<br />
migration telle qu’elle a été implantée au sein <strong>de</strong> ProActive est dite faible ; le co<strong>de</strong> est mobile<br />
mais pas le contexte d’exécution. Le concept <strong>de</strong> migration faible s’oppose au concept <strong>de</strong> migration<br />
forte. La migration dite forte permet la migration d’un objet à n’importe quel moment pendant<br />
l’exécution <strong>de</strong> l’objet. Cette restriction est due au langage Java qui ne permet pas la capture <strong>de</strong>s<br />
contextes d’exécution <strong>de</strong>s Threads. La conséquence immédiate est l’impossibilité <strong>de</strong> faire migrer<br />
un objet tant que ce <strong>de</strong>rnier n’a pas atteint un état désigné comme stable.<br />
N’importe quel objet actif a la possibilité <strong>de</strong> migrer ou d’être migré. Si l’objet actif possè<strong>de</strong> un<br />
graphe d’objets passifs, ces <strong>de</strong>rniers seront déplacés également vers la nouvelle localisation. Le<br />
processus <strong>de</strong> migration repose actuellement sur la sérialisation Java pour transférer les objets<br />
53