@MASTERSTHESIS{Fal02,
  title = {{Una infrastruttura per l'interoperabilità e lo scambio di oggetti in rete (An infrastructure for object interoperability and exchange in the net)}},
  author = {Falassi, Daniele},
  booktitle = { Master Thesis (in Italian), Università di Firenze},
  abstract = {A causa dell'evoluzione della rete mondiale, la necessità di una maggiore
      interoperabilità tra linguaggi è divenuta oggi una problematica molto
      importante. Di conseguenza sono stati creati strumenti come CORBA che consentono
      ad applicazioni distribuite scritte in linguaggi differenti di interoperare
      tramite un meccanismo per la chiamata remota di metodi. Una simile soluzione,
      però non è attuabile in un contesto di computazione mobile, dove è richiesta
      la possibilità di far migrare del codice. In questo senso, il framework Java si
      è rivelato un ottimo strumento per la realizzazione di ambienti per la
      mobilità, proprio perché consente di inviare il codice tra piattaforme
      differenti. E' possibile, ad esempio, far migrare un oggetto Java tra due
      applicazioni in esecuzione su sistemi differenti. Tuttavia si è vincolati ad
      utilizzare questo unico linguaggio. In questa tesi, viene presentata una
      infrastruttura in grado di far scambiare oggetti, fra applicazioni distribuite
      scritte in linguaggi di programmazione differenti. Non vi sono strumenti
      software noti che permettano questo meccanismo di interoperabilità.
      L'infrastruttura è costituita da delle API (Application Language Interfaces),
      da alcuni server di informazioni e da alcuni server di classi. Le API sono le
      classi di interfaccia tramite le quali le applicazioni possono utilizzare
      l'infrastruttura. Di queste API deve essere presente una versione per ciascun
      linguaggio utilizzato. Sui server di classi, che devono essere almeno uno per
      ogni linguaggio, sono registrate le definizioni delle classi che si intendono
      scambiare nell'infrastruttura. I server di informazioni consentono di
      individuare da quale server di classi scaricare una classe data. La
      comunicazione tra le diverse parti dell'infrastruttura avviene tramite lo
      scambio di messaggi XML. Vediamo ora brevemente il funzionamento
      dell'infrastruttura. Il programmatore deve anzitutto realizzare, per ogni classe
      che vuole scambiare, una versione in ciascun linguaggio. Queste diverse versioni
      devono essere registrate sui server di classi. Sui server di informazioni si
      deve registrare su quale server di classi si è posizionata ogni versione di una
      data classe. A questo punto una applicazione può scambiare oggetti che sono
      istanze delle classi che si sono registrate, nel modo seguente. Anzitutto,
      tramite le API, lo stato S dell'oggetto viene codificato in un messaggio XML.
      Questo messaggio viene inviato alle API dell'applicazione a cui si vuole inviare
      l'oggetto. Queste, ricevuto il messaggio XML, interrogano il server di
      informazioni per sapere dove è localizzata la classe di cui l'oggetto ricevuto
      è istanza. Una volta ricevuta la risposta, la API si connettono all'opportuno
      server di classi e ottengono la definizione per la classe cercata. Infine si
      costruisce un nuovo oggetto nella classe corrispondente a quella di partenza e
      nello stato S, che era contenuto nel messaggio XML. Nella tesi sono state
      realizzate API nei linguaggi Java e C#. Al fine di illustrare l'utilità
      dell'infrastruttura in un contesto per la mobilità viene presentato un semplice
      framework per agenti mobili: FAL.},
  year = {2002},
  url = {http://music.dsi.unifi.it/thesis/thesis-falassi.ps.gz},
  url = {http://music.dsi.unifi.it/thesis/thesis-falassi.pdf},
}