+ All Categories
Home > Documents > Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004)....

Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004)....

Date post: 28-May-2020
Category:
Upload: others
View: 21 times
Download: 0 times
Share this document with a friend
13
Lezione 4 Lezione 4 Principi del Principi del Middleware Middleware Object Object - - oriented oriented Vittorio Scarano Corso di Sistemi Distribuiti (2003-2004) Laurea Specialistica in Informatica Università degli Studi di Salerno Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 2 Obiettivo della lezione Obiettivo 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 host differente Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 3 Struttura Struttura della della lezione lezione 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 Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 4 Il Il middleware middleware e la rete e 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
Transcript
Page 1: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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

Page 2: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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

Page 3: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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..” ☺

Page 4: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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)

Page 5: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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

Page 6: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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)

Page 7: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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);

}

Page 8: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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 è �����

Page 9: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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)

Page 10: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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

Page 11: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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

Page 12: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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

Page 13: Vittorio Scarano Sistemi Distribuiti (2003- Università ... · Sistemi Distribuiti (2003-2004). Vi.ttorio Scarano 9 User Datagram Protocol (UDP) • Permette ad una componente distribuita

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)


Recommended