Suggerimenti per possibili estensioni di Macondo
Questo documento vuole essere una raccolta di suggerimenti per future
estensioni di Macondo.
Supporto per agenti mobili
- Sicurezza: il problema deve essere affrontato a diversi livelli,
in quanto si devono considerare gli aspetti di protezione degli host che
ospitano gli agenti e degli agenti stessi. A tal proposito si potrebbe
adottare il JDK 1.2, che presenta un nuovo e potente modello di sicurezza.
- Meccanismo di migrazione: il meccanismo di migrazione degli
agenti può essere esteso in diversi modi. Ad esempio, la versione
attuale di Macondo prevede che il codice di un agente venga prelevato sempre
e solo dalla precedente locazione visitata dall'agente. Si potrebbe
prevedere la possibilità di caricare il codice anche da sorgenti
alternative, in modo da aumentare la tolleranza ai guasti del sistema.
- Prestazioni: una prima estensione potrebbe consistere
nell'introduzione del supporto ai file
jar
di archivio Java. In
questo modo le diverse classi che compongono un agente potrebbero essere
compattate in un unico file e trasferite con un'unica connessione, mentre al
momento è richiesta una connessione per ogni classe richiesta.
Un notevole miglioramento alle prestazioni del sistema potrebbe derivare
dall'introduzione di una cache di thread. L'ambiente di esecuzione degli
agenti, il Place
, è infatti un server multi-threaded che
esegue in un nuovo thread ogni richiesta che riceve. In questo modo si
potrebbe anche cercare di limitare il numero di richieste che un
Place
riceve, per evitare che un eccessivo carico crei un crash
del sistema.
- Controllo sui riferimenti: fino alla versione 1.1 di Java non
era previsto alcun meccanismo per controllare i riferimenti a oggetti. Una
volta creato un agente Macondo non è quindi possibile controllare
direttamente quale altro oggetto accede all'agente e ai suoi metodi. Inoltre
non è nemmeno possibile assicurarsi che un agente venga rimosso dal
sistema perchè questo è un compito del garbage collector, che
rimuove un oggetto appunto quando non ci sono più riferimenti ad esso.
Il JDK 1.2 permette di controllare maggiormente la gestione dei riferimenti
a oggetti e di risolvere i precedenti problemi.
- WWW: al momento Macondo non prevede alcun supporto a WWW.
Sarebbe interessante estendere il supporto a run time in modo da poter
lanciare e controllare l'esecuzione di un agente da una pagina Web. Si
potrebbe inoltre studiare l'integrazione fra server di agenti e server Web,
in modo da poter realizzare agenti mobili di ricerca che migrano fra
diversi server Web e accedono localmente alle pagine di loro interesse.
- Controllo sugli agenti: si potrebbe introdurre la
possibilità di controllare l'esecuzione di un agente remoto attraverso
l'utilizzo di un apposito oggetto proxy. Il proxy è definito
localmente e mette a disposizione dei metodi per lanciare, interrompere o
far riprendere l'esecuzione di un agente remoto. Un tale sistema di
controllo richiede anche l'utilizzo di meccanismi di registrazione e naming
per gli agenti.
- GUI di controllo: si potrebbe realizzare un'interfaccia grafica
per i server di agenti, allo stesso modo di Aglets.
- Persistenza: il supporto alla persistenza di agenti può
essere migliorato in diversi modi, soprattutto per quanto riguarda la sua
API e l'interazione con le applicazioni.
MJada
- Transazioni: si potrebbe introdurre la possibilità di
raggruppare diverse operazioni, eventualmente anche su diversi spazi di
tuple, in un'unica transazione ACID.
Buon lavoro.