Simple Message-Oriented Middleware Autore: Bernardi Giorgio Matricola: 0000.156.516 Corso di Laurea Specialistica in Ingegneria Informatica Corso di Reti di Calcolatori LS Università di Bologna Obiettivi Realizzare un middleware con i seguenti fini Consentire scambio di messaggi fra applicazioni diverse Consentire di lavorare in modo orientato agli oggetti con oggetti remoti Consentire il dialogo fra una applicazione Java e una Visual Basic/COM Realizzare librerie il cui setup sia semplice e veloce da parte del programmatore Architettura Logica Middleware: 1. Nucleo di comunicazione 2. Strato di servizi Applicazione: Sfrutta i servizi Sfrutta il nucleo di comunicazione direttamente Comunicazione anche fra più applicazioni Middleware ampiamente estendibile Nucleo di Comunicazione Componenti: messaggio: contenuto della comunicazione Sender: colui che inizia la comunicazione inviando il messaggio; Receiver: entità alla quale il messaggio deve pervenire; canale: ambiente attraversato dal messaggio per raggiungere il Receiver Infrastruttura: entità aggiuntive che ricevono il messaggio dal Sender e fanno in modo che giunga al Receiver Infrastruttura di comunicazione Dispatcher per implementare politiche diverse (code, priorità di messaggi, ecc…) MsgManager per gestire il canale di comunicazione in maniera sequenziale Comunicazione tramite nomi ad-hoc univoci (ObjectID e MsgManagerAddress) Infrastruttura di comunicazione Molte configurazioni differenti organizzando i dispatcher, i Receivers e i MsgManager Un Manager per ogni canale differente: Socket Mail Passaggio di messaggi locale fra oggetti della stessa applicazione Tuple, ecc… Servizi per Object Oriented Programming inter-application Mappaggio di chiamate a metodi mediante oggetti CProcedure e oggetti CValue che contengono valori primitivi Utilizzo di Stub e Skeleton per incapsulare l’invio di messaggi per eseguire Remote Procedure Calls Stub e Skeleton statici (per una singola classe) generati in automatico da dichiarazioni di classi in Java, Vb, ecc… … Stub e Skeleton Dinamici … oppure Stub e Skeleton dinamici implementati dall’SMom Proxy che implementa l’interfaccia desiderata e usa lo Stub dinamico Skeleton usa chiamate con late binding verso la classe da raggiungere Politiche per lo Stub Recupero del risultato: Fire & Forget Attesa sincrona del chiamante Polling del chiamante per recuperare il risultato Attesa/Polling di un delegato che successivamente mi passa il risultato Call back da parte dello stub Ecc… Conclusioni E’ stato possibile realizzare una libreria Java e una Visual Basic/COM che cooperano e comunicano fra loro Applicazioni facilmente realizzabili Setup molto semplice Sistema di esempio: Applicazione Java (NavalBattle.jar) Applicazione Java wrapper Applicazione Visual Basic che dialoga con il wrapper Applicazioni di test Test Visual Basic Test Java locale