Lezione 05 - Proxy

13
Ingegneria del Software

Transcript of Lezione 05 - Proxy

Page 1: Lezione 05 - Proxy

Ingegneria del Software

Page 2: Lezione 05 - Proxy

Presentazione del pattern Proxy

Page 3: Lezione 05 - Proxy

Ingegneria del Software - A.A. 2003/2004

Il pattern Proxy (1/6)

• Nome Proxy

• Synopsis Pattern molto generale che occorre in molti altri pattern, ma raramente nella sua forma pura.

Il pattern Proxy permette l’utilizzo indiretto di un oggetto in modo trasparente al client.

Con il termine trasparente si evidenzia il fatto che il client non si accorge di utilizzare un oggetto che si frappone tra lui e quello a cui è effettivamente interessato.

Page 4: Lezione 05 - Proxy

Ingegneria del Software - A.A. 2003/2004

Il pattern Proxy (2/6)

• Context Un oggetto proxy è un oggetto che riceve chiamate di metodi per conto di un altro oggetto.

Le motivazioni che fanno nascere l’esigenza di frapporre tra client e server un oggetto proxy determinano il nome specifico del pattern (cfr. Related Pattern).

Esempio d’uso: HTTP Proxy- un intermediario fra web browser e http server- caching di documenti a cui accedono frequentemente

diversi browser

:Client

Page 5: Lezione 05 - Proxy

Ingegneria del Software - A.A. 2003/2004

Il pattern Proxy (3/6)

• Forces I motivi che conducono alla definizione di una soluzione generica sono legati a politiche di gestione dell’oggetto che si trova “dietro” il proxy. Ad esempio:

- evitare di accedere direttamente (location transparency)

- garantire sicurezza- garantire efficienza- …

La gestione di un servizio deve essere fornita inmodo tale che risulti trasparente ai client.

Page 6: Lezione 05 - Proxy

Ingegneria del Software - A.A. 2003/2004

Il pattern Proxy (4/6)

Solution

Il client richiedeil servizio attraversoil proxy

1

Il proxy esegue le operazionirelative alla politica di gestione

degli oggetti Service

2

Eventualmente il proxy richiama il corrispondente metodo dell’oggetto

Service

3

Page 7: Lezione 05 - Proxy

Ingegneria del Software - A.A. 2003/2004

Il pattern Proxy (5/6)

• Consequences- Dipendono dalla particolare politica di gestione

adottata dal proxy

• Implementation- Banale

• Code example- Nessuno

Page 8: Lezione 05 - Proxy

Ingegneria del Software - A.A. 2003/2004

Il pattern Proxy (6/6)

• Related Patterns

1. Access Proxy2. Broker/Proxy3. Virtual Proxy4. Remote Proxy

5. Façade6. Decorator

Presentati sinteticamentenelle prossime slide

Analizzati come schedadi [Grand98]

Page 9: Lezione 05 - Proxy

Ingegneria del Software - A.A. 2003/2004

Il pattern Access Proxy

1. Access Proxy (non documentato su Patterns in Java)Il pattern Access Proxy viene utilizzato per far rispettare una politica di sicurezza nell’accesso ad oggetti che erogano determinati servizi.

Esempio: Il servizio può essere erogato ad un massimo di nclient contemporaneamente

:AccessProxy:Client :ServicedoIt()1 3

doIt()

if (actualClient<=n) service.doIt()else // messaggio di errore

2

Page 10: Lezione 05 - Proxy

Ingegneria del Software - A.A. 2003/2004

Il pattern Broker/Proxy

2. Broker [non documentato su Grand98] Il pattern Proxy è a volte usato con il pattern Broker per fornire un sistema trasparente finalizzato al ridirezionamento di una richiesta di servizio verso un service object selezionato dall’oggetto Broker/Proxy.

Esempio: Il Broker/Proxy ridireziona i client con una politica Round Robin sulle istanze Service multithread disponibili

:Broker/Proxy:Client :ServicedoIt()1 3

doIt()

Individuazione del Service object

successivo

2 :Service

:Service

Page 11: Lezione 05 - Proxy

Ingegneria del Software - A.A. 2003/2004

Il pattern Virtual Proxy

3. Virtual Proxy [Larman98 – documentato su Grand98]Usato per creare l’illusione che l’oggetto che eroga un servizio esista anche se non è ancora stato istanziato. Ciò è utile quando la creazione dell’oggetto è costosa e il servizio potrebbe non essere necessario.Un Virtual Proxy si frappone tra il client e l’oggetto Service ritardando la creazione di quest’ultimo al momento dell’effettiva richiesta di servizio.

Esempio:Un programma per la visualizzazione di testi deve gestire informazioni riguardanti file. Il programma è in grado di visualizzare il nome di un file, il testo completo, o trovare e visualizzare una singola riga. Queste informazioni sono racchiuse all’interno di un unico oggetto…

Page 12: Lezione 05 - Proxy

Ingegneria del Software - A.A. 2003/2004

Il pattern Remote Proxy

4. Remote Proxy [non documentato su Grand98] Usato per nascondere il fatto che il service object sia in esecuzione su una macchina diversa da quella su cui è in esecuzione il client. In questo pattern il proxy viene chiamato stub.

Esempio:La Remote Method Invocation (RMI) che consente l’interazionedi oggetti Java distribuiti.

Page 13: Lezione 05 - Proxy

Ingegneria del Software - A.A. 2003/2004

Domande?