vittorio scarano sistemi distribuiti (2003- università ... · sistemi distribuiti (2003-2004)....
TRANSCRIPT
Lezione 4Lezione 4
Principi del Principi del MiddlewareMiddleware
ObjectObject--orientedoriented
Vittorio ScaranoCorso di Sistemi Distribuiti (2003-2004)
Laurea Specialistica in Informatica
Università degli Studi di Salerno
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
2
Obiettivo della lezioneObiettivo della lezione
• Dopo aver descritto gli oggetti distribuiti come un modello adeguato per le componenti distribuite.. ora:
• Descrizione dei principi alla base del middleware:– definizione
– tipi diversi di middleware
– middleware orientato ad oggetti
• La domanda:Come fa il middleware a permettere ad un oggetto che si trova un certo host di effettuare una richiesta di un servizio (esecuzione di metodo) ad un oggetto che si trova un hostdifferente
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
3
StrutturaStruttura delladella lezionelezione
• Le reti di calcolatori ed il modello ISO/OSI
• Tipi diversi di Middleware– Transaction-Oriented Middleware
– Message-Oriented Middleware
– Remote Procedure Calls
• Object-Oriented Middleware
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
4
Il Il middlewaremiddleware e la retee la rete
• Tutti i sistemi operativi attuali offrono un notevole alla comunicazione su reti: network operating systems
• Le facilities che offrono sono:• comunicazione attraverso scambi di pacchetti• correzione di errori di trasmissione• fault tolerance• composizione di pacchetti in flussi di dati
• Sistemi distribuiti costruiti su queste semplici primitive– sono essenzialmente time-critical systems
• Il Middleware colma la distanza tra – la progettazione con un modello a oggetti distribuiti– le primitive di base fornite dai sistemi operativi
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
5
Physical
Data link
Il Il modellomodello di di riferimentoriferimento ISO/OSIISO/OSI
Network
Transport
Session
Presentation
Application
Comportamento della interfaccia fisica della rete
• “Open System Interconnection” (OSI)
Comunicazione tra 2 nodi:
Comunicazione di più nodi: routing di pacchetti
Comunicazione di flussi tra nodi
Gestione di connessioni
Risolve le differenze nella rappresentazione di dati
Componenti distribuite e loro interazione
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
6
Physical
Data link
Il layer Transport Il layer Transport
• Livello 4 di ISO/OSI
• Trasporto di informazioni (di lunghezza variabile) sulla rete
• Connection-oriented– mantengono connessioni tra 2
componenti
– stream (flussi): open, close, read, write
• Connection-less– scambio di messaggi a
lunghezza fissa
– datagram
Network
Transport
Session
Presentation
Application
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
7
TransmissionTransmission Control Control ProtocolProtocol (TCP)(TCP)
• Fornisce flussi di byte bidirezionali tra due componenti distribuite
• Affidabile ma “lento” (ritrasmissioni)
• L’utilizzo di buffer a entrambi gli endpoint rende indipendenti le due velocità di computazione
• UNIX rsh, rcp e rlogin sono basati su TCP
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
8
Application
Presentation
Session
Transport
Application
Presentation
Session
TransportInput Stream
Output Stream
Richiesta
Risultati
Client Server
L’uso di TCP per le richiesteL’uso di TCP per le richieste
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
9
UserUser DatagramDatagram ProtocolProtocol (UDP)(UDP)
• Permette ad una componente distribuita di inviare un messaggio (sequenza di byte) ad una altra componente
• Per ogni messaggio deve essere specificato il destinatario– connection-less
• Non affidabile (“Best effort”) ma veloce
• Lunghezza messsaggio fissata (9-18 Kb)– ma sufficiente per molti scopi su reti locali affidabili
• Necessità di accodamento al ricevitore
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
10
Application
Presentation
Session
Transport
Application
Presentation
Session
Transport
Result Datagrams
Request Datagrams
Client Server
UDP for Request ImplementationUDP for Request ImplementationSi
stem
i Dis
trib
uiti
(20
03-2
004)
. V
i.tto
rio
Scar
ano
11
StrutturaStruttura delladella lezionelezione
• Le reti di calcolatori ed il modello ISO/OSI
• Tipi diversi di Middleware– Transaction-Oriented Middleware
– Message-Oriented Middleware
– Remote Procedure Calls
• Object-Oriented Middleware
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
12
L’uso diretto dei protocolli di rete L’uso diretto dei protocolli di rete implica…implica…
• Che sono a carico del progettista:– la associazione di parametri complessi su stream di byte
(record, stringhe, array)– la risoluzione “manuale” dei problemi di eterogeneità– la identificazione delle componenti (riferimenti in termini di
DNS, porte, etc.)– la implementazione dei meccanismi di attivazione– la type safety– la sincronizzazione (invocazione-ritorno) tra le componenti– la quality of service (atomicità, transazioni, fault-tolerance,
etc.)
• “No middleware? Ahi ahi ahi..” ☺
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
Per fortuna che c’è il Per fortuna che c’è il Middleware…Middleware…
• Tutti i compiti precedenti vengono risolti dal MW– che implementa lo strato di sessione e di presentazione del
modello ISO/OSI
• Risolve la eterogeneità di – hardware
– sistema operativo
– linguaggi di programmazione
– rete
• Fornito insieme a sistemi di sviluppo ed ad ambienti run-time per realizzare la implementazione e il deployment del sistema distribuito
PhysicalData linkNetwork
Transport
Application
SessionPresentation
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
14
MiddlewareMiddleware: : TransactionTransaction--orientedoriented MWMW
• Supporta le transazioni su database distribuiti– attraverso il protocollo di two-phase commit
• Esempi:– IBM CICS, BEA Tuxedo, Transarc Encina
• Fault tolerance:– gestisce database replicati usando transazioni per updates
• Load balancing:– le query vengono indirizzate sulla replica meno carica
– strategia adatta solo in certe situazioni• herd effect (effetto del branco) su sistemi con picchi notevoli di
carico
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
15
MiddlewareMiddleware: : MessageMessage--orientedoriented MWMW
• Permette lo scambio di messaggi• invocazione in un messaggio e valore restituito in un altro
messaggio
• Esempi: – IBM MQSeries
– ToolTalk
– NCS TopEnd
• Naturale per comunicazione asincrona e multicasting
• Fault-tolerance: – con code di messaggio per la memorizzazione temporanea di
messaggi destinati ad un nodo che non è raggiungibile
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
16
MiddlewareMiddleware: Remote Procedure : Remote Procedure CallsCalls MWMW
• Inventato da Sun negli anni 80 – Open Network Computing (ONC)– poi diventato standard del Distributed Computing
Environment (DCE) del consorzio X/Open
• RPC è il progenitore dei sistemi MW OO– molti concetti di base sono stati introdotti con RPC
• Permette la invocazione di procedure su nodi remoti• Le interfacce vengono definite usando un Interface
Definition Language (IDL)• Un compilatore RPC genera l’implementazione del
layer di sessione e di presentazione– in un client stub e in un server stub (skeleton)
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
17
Uno schema per RPCUno schema per RPC
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
18
Interface Interface DefinitionDefinition LanguageLanguage
• IDL è lo standard di DCE– simile all’ XDR della
definizione di Sun
• Struttura dati:– data di nascita e nome
• Definizione del programma RPC (server)– numero del programma
– versione
– procedure remote• con signature
const NL=64;struct Player {struct DoB {int day; int month; int year;}string name<NL>;};
program PLAYERPROG {version PLAYERVERSION {void PRINT(Player)=0;int STORE(Player)=1;Player LOAD(int)=2;}= 0;} = 105040;
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
19
Data link
Lo Lo stratostrato di di presentazionepresentazione di RPCdi RPC
Network
Transport
Session
Presentation
Application
RPC middleware
• Risolve la eterogeneità
• Trasmette i parametri in maniera type-safe
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
20
GliGli scopiscopi dellodello stratostrato di di presentazionepresentazione di RPCdi RPC
Resolution of data heterogeneity
Common datarepresentation
Transmission ofdata declaration
Marshalling and Unmarshalling
static dynamic
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
21
I I compiticompiti di RPC di RPC -- 11
Resolution of data heterogeneity
Common datarepresentation
Transmission ofdata declaration
• Ogni struttura dati definita nell’IDL viene trasformata in modo da essere trasportata
• Rappresentazione comune dei dati– indifferente alla piattaforma usata
• Dichiarazione dei tipi utilizzati Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
22
I I compiticompiti di RPC di RPC -- 22
Marshalling and Unmarshalling
static dynamic
• Le strutture dati devono poi essere trasformate– marshalling e unmarshalling
• Il codice che gestisce la eterogeneità dei dati e la parte di marshalling viene generato da un compilatore (rpcgen)– a partire dalla definizione IDL (XDR)
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
23
MarshallingMarshalling e e unmarshallingunmarshalling: un esempio: un esempio
• Esplicitato in C++– senza ��������
� ��������
– day, mont, year, lunghezza nome + separatori
– separatore = blank
� ���������
– separatore = blank
char * marshal() {char * msg;msg=new char[4*(sizeof(int)+1) +
strlen(name)+1];sprintf(msg,"%d %d %d %d %s",
dob.day,dob.month,dob.year,strlen(name),name);
return(msg);};void unmarshal(char * msg) {
int name_len;sscanf(msg,"%d %d %d %d ",
&dob.day,&dob.month,&dob.year,&name_len);
name = new char[name_len+1];sscanf(msg,"%d %d %d %d %s",
&dob.day,&dob.month,&dob.year,&name_len,name);
};
struct Player {struct DoB {int day; int month; int year;}string name<NL>;};
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
ChiamataChiamata locale locale oppureoppure remotaremota
CalledCalled
StubStubStubStub
CallerCaller
CalledCalled
CallerCallerCallerCaller
Layer di Layer di trasportotrasporto (TCP o UDP)(TCP o UDP)
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
25
Gli Gli stubstub
• Creati automaticamente da rpcgen• Obiettivi:
– ottenere la type safety (tutte le chiamate usano gli stessi dati primitivi (IDL) oppure complessi (e definiti))
• le operazioni richieste sono effettivamente disponibili• i parametri forniti dal client sono quelli che il server si attende• i risultati forniti dal server sono quelli che si attendi il client
– sincronizzazione:• lo stub del client invia la richiesta ed attende che il server termina• lo stub del server attende richieste ed opera la chiamata delle
operazioni Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
26
Data link
Lo Lo stratostrato di session di RPCdi session di RPC
Network
Transport
Session
Presentation
Application
RPC middleware
• Implementa– la identificazione di
server RPC
– la attivazione di server RPC
– il dispatch delle operazioni
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
27
La identificazione di un server RPCLa identificazione di un server RPC
• Statica:– nome dell’host conosciuto a run-time– non permette trasparenza di migrazione e replica
• Dinamica:– ogni host Unix ha un demone chiamato � �����
– ogni server registra il programma su � �����
• I client possono contattare un � ����� particolare– anche per controllare la esistenza di un server o avere una
lista dei server disponibili
• Oppure possono controllare tutti i portmap della rete– in maniera da cercare servizi indipendentemente dalla
topologia
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
28
Identificazione di un server: un esempioIdentificazione di un server: un esempio
• Lato client
• Si ottiene un riferimento al server– specificando host, program
number, versione e protocollo
• Dopo alcuni controlli
• Si effettua la chiamata a procedura remota– con alcuni messaggi di errore
– e di chiusura del riferimento
print_person(char * host, Player * pers) {
CLIENT *clnt;clnt = clnt_create(host,
105040, 0, "udp");if (clnt == (CLIENT *) NULL)
exit(1);if (print_0(pers, clnt)==NULL)
clnt_perror(clnt, "call failed");clnt_destroy(clnt);
}
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
29
Un altro esempio in RPCUn altro esempio in RPC
• Calcolo della media di un array di interi in remoto
• Standard ONC Sun (non DCE)– molto simili nella sostanza
• Creazione di stub e skeleton con rpcgen
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
30
La registrazione su La registrazione su portmapportmapSi
stem
i Dis
trib
uiti
(20
03-2
004)
. V
i.tto
rio
Scar
ano
31
1. la definizione in XDR dei dati1. la definizione in XDR dei dati
• Costante per la dimensione
• Struttura dati:– limite sulla dimensione del
vettore
– a run-time sono disponibili informazioni aggiuntive
• Programma remoto– unica procedura che offre
const MAXAVGSIZE = 200;
struct input_data { double input_data<200>;
};
typedef struct input_data input_data;
program AVERAGEPROG { version AVERAGEVERS { double AVERAGE(input_data)=1;
} = 1; } = 22855;
�����
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
32
L’uso di L’uso di rpcgenrpcgen
• A questo punto rpcgen viene usato per generare stub e skeleton– oops, server stub ☺
• Con ������ ����� vengono creati i file ���
���������
�������
���������
• Questi file non devono essere editati• Giusto per dare una idea, questo punto è �����
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
33
Il file Il file avg.havg.h
• Definizione della struttura dati– con lunghezza (a run-time)
– e valore
• Definizione funzioni– in C e C++
• Continua con la definizione della funzione di average…
• File da non editare
#ifndef _AVG_H_RPCGEN #define _AVG_H_RPCGEN #include <rpc/rpc.h> #define MAXAVGSIZE 200 struct input_data {
struct { u_int input_data_len; double *input_data_val;
} input_data; }; typedef struct input_data input_data; #ifdef __cplusplus extern "C" bool_t
xdr_input_data(XDR *, input_data*); #elif __STDC__ extern
bool_txdr_input_data(XDR *, input_data*);
………..
�����
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
34
2. Codice del server2. Codice del server
• Inclusione di file ���
• Definizione della funzione average– con il proprio numero
– con uso di informazioni dinamiche sulla dimensione dei dati passati
– con due signature diverse
#include <rpc/rpc.h> #include "avg.h" #include <stdio.h> static double sum_avg; double * average_1(input_data *input,
CLIENT *client) { double *dp = input->input_data.input_data_val; u_int i; sum_avg = 0; for(i=1;i<=input->input_data.input_data_len;i++) {
sum_avg = sum_avg + *dp; dp++;
} sum_avg =
sum_avg / input->input_data.input_data_len; return(&sum_avg); } double * average_1_svc(
input_data *input, struct svc_req *svc) { CLIENT *client; return(average_1(input,client));
}
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
35
3. Codice del 3. Codice del clientclient: : ������������
• Solo parte significativa– i dati sono su linea di
comando (con hostname)
• Preparazione dei dati• allocazione
• dimensionamento (per RPC)
• assegnamento
• Identificazione server
• Chiamata remota
• Risultato
…input_data average_1_arg; average_1_arg.input_data.input_data_val =
(double*) malloc(MAXAVGSIZE*sizeof(double)); dp = average_1_arg.input_data.input_data_val; average_1_arg.input_data.input_data_len = argc - 2; for (i=1;i<=(argc - 2);i++) {
f = strtod(argv[i+1],&endptr); printf("value = %e\n",f); *dp = f; dp++;
} clnt = clnt_create(host, AVERAGEPROG,
AVERAGEVERS, "udp"); if (clnt == NULL) {
clnt_pcreateerror(host); exit(1); } result_1 = average_1(&average_1_arg, clnt); if (result_1 == NULL) {
clnt_perror(clnt, "call failed:"); }….
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
36
Il Il makefilemakefile per l’esempioper l’esempio
• Per il client– serve lo stub client
�������� da rpcgen
• Per il server– serve lo stub server
������� da rpcgen
• Uso di rpcgen
BIN = ravg avg_svcGEN = avg_clnt.c avg_svc.c avg_xdr.c avg.hRPCCOM = rpcgen
all: $(BIN)
ravg: ravg.o avg_clnt.o avg_xdr.o $(CC) -o $@ ravg.o avg_clnt.o avg_xdr.o
ravg.o: ravg.c avg.h $(CC) -g ravg.c -c
avg_svc: avg_proc.o avg_svc.o avg_xdr.o $(CC) -o $@ avg_proc.o avg_svc.o avg_xdr.o
avg_proc.o: avg_proc.c avg.h
$(GEN): avg.x $(RPCCOM) avg.x
clean cleanup: rm -f $(GEN) *.o $(BIN)
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
37
EsecuzioneEsecuzione
$ avg_svc &$ rpcinfo –p localhostprogram vers proto port100000 2 tcp 111 portmapper100000 2 udp 111 portmapper22855 1 udp 1221 22855 1 tcp 1221$ ravg localhost 9.2 8.4 6.3…average = 7,9666667e+00$
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
38
StrutturaStruttura delladella lezionelezione
• Le reti di calcolatori ed il modello ISO/OSI
• Tipi diversi di Middleware– Transaction-Oriented Middleware
– Message-Oriented Middleware
– Remote Procedure Calls
• Object-Oriented Middleware
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
39
Interface Interface DefinitionDefinition LanguageLanguage
• Ogni middleware OO ha un IDL
• In aggiunta, le IDP OO supportano tipi di oggetti come parametri, malfunzionamenti e ereditarietà– maggiori dettagli tra un attimo
• In maniera simile a RPC– esistono IDL compilers che creano client e server stub per
implementare lo strato di sessione e di presentazione
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
40
OO OO MiddlewareMiddleware è riflessivoè riflessivo
• Le procedure RPC non possono restituire altre procedure RPC come valore
• Invece OO Middleware permette di – definire la classe di un oggetto server
– definire un metodo che restituisce una istanza di un oggetto server
• Estremamente utile per implementare la trasparenza di replica e di migrazione
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
41
OO OO MiddlewareMiddleware gestisce i malfunzionamentigestisce i malfunzionamenti
• RPC restituisce semplicemente un puntatore NULL– in caso di malfunzionamenti
• Questo non permette di sapere maggiori informazioni su cosa è accaduto– in modo da poter prendere decisioni conseguenti
• In OO Middleware, le eccezioni remote trasportano informazioni utili a capire cosa è successo, come:– il loro tipo (organizzabile in una gerarchia con la
ereditarietà)
– dati
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
42
OO OO MiddlewareMiddleware rende più indipendenti dai datirende più indipendenti dai dati
• Nel meccanismo RPC, era necessario conoscere la implementazione dei dati trasmessi– nell’esempio: il fatto che un array di double codificasse
anche la propria lunghezza
• In un OO Middleware, l’oggetto remoto nasconde la propria implementazione e espone solo la sua interfaccia:– non necessario modificare/ricompilare tutto al cambiamento
delle specifiche
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
43
Un esempio di IDL per OO Un esempio di IDL per OO MiddlewareMiddleware
• Definizione di due oggetti remoti
• Object
• ObjectStore– il cui metodo load restituisce
un oggetto remoto
– e può lanciare una eccezione remota
interface Player : Object {
typedef struct _Date {short day; short month; short year;
} Date;attribute string name;readonly attribute Date DoB;
};
interface PlayerStore : Object {exception IDNotFound{};short save (in Player p);Player load(in short id) raises(IDNotFound);void print(in Player p);
};
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
44
Data link
Lo Lo stratostrato di di presentazionepresentazione di OO Middlewaredi OO Middleware
Network
Transport
Session
Presentation
Application
OO middleware
• Risolve la eterogeneità– compreso riferimenti a
oggetti
• Trasmette i parametri in maniera type-safe
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
45
Data link
Lo Lo stratostrato di session di OO Middlewaredi session di OO Middleware
Network
Transport
Session
Presentation
Application
OO middleware
• Implementa– il mapping di riferimenti a
oggetti su host
– primitive per attivazione/deattivazione
– il dispatch delle operazioni
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
46
SessionSession layerlayer: : MappingMapping tra oggetti e tra oggetti e hosthost
• Mentre RPC si basa su hostname e numero di porta– come TCP/UDP
• l’OO Middleware deve gestire i riferimenti a oggetti– generati dal sistema di middleware
– e non dall’amministratore• come per la registrazione su portmap
• I riferimenti a oggetti non devono esplicitare il riferimento all’host su cui sono – trasparenza della locazione
– Riferimento → Host (da lato client del MW) → ObjectAdapter (da lato server del MW) → Oggetto
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
47
SessionSession layerlayer: altri compiti: altri compiti
• Il compito dell’object adapter (almeno uno per host)– assegnare riferimenti a oggetti con oggetti in esecuzione
• Se l’oggetto non è attivo– usa l’implementation repository per la attivazione
• attraverso un nuovo processo, thread, o link dinamico a librerie
– che contiene informazioni su• modalità di attivazione dell’oggetto, stato dell’oggetto, etc.
• L’operation dispatch– la decodifica della richiesta da parte dell’oggetto permette di scegliere
il metodo da eseguire
• La sincronizzazione– avviene nello strato di sessione sia lato client che server
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
48
Riferimenti a oggetti Host Processi Oggetti
I I compiticompiti del session layer: del session layer: riassuntoriassunto
ricerca dell’host
per contattare l’objectadapter..
che trova il
processo..
che localizza
l’oggetto..
su cui si esegue il metodo
Sist
emi D
istr
ibui
ti (
2003
-200
4).
Vi.t
tori
oSc
aran
o
49
ConclusioniConclusioni
• IL Middleware si poggia sullo strato di trasporto del modello ISO/OSI
• Esistono diversi tipi di middleware
• Remote Procedure Call
• Object-Oriented Middleware implementa– il layer di sessione (attraverso Object adapter)
– il layer di presentazione (con client/server stub derivati daIDL)