Ingegneria del Software
Presentazione del pattern
Proxy
1
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.
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.
:Client
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
Ingegneria del Software - A.A. 2003/2004
2
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 in
modo tale che risulti trasparente ai client.
Ingegneria del Software - A.A. 2003/2004
Il pattern Proxy (4/6)
Solution
Il client
richiede
il servizio
attraverso
il proxy
1
2
Il proxy esegue le operazioni
relative alla politica di gestione
degli oggetti Service
3
Eventualmente il proxy richiama il
corrispondente metodo dell’oggetto
Service
Ingegneria del Software - A.A. 2003/2004
3
Il pattern Proxy (5/6)
•
Consequences
- Dipendono dalla particolare politica di gestione
adottata dal proxy
•
Implementation
- Banale
•
Code example
- Nessuno
Ingegneria del Software - A.A. 2003/2004
Il pattern Proxy (6/6)
•
Related Patterns
1. Access Proxy
2. Broker/Proxy
3. Virtual Proxy
4. Remote Proxy
Presentati sinteticamente
nelle prossime slide
5. Façade
6. Decorator
Analizzati come scheda
di [Grand98]
Ingegneria del Software - A.A. 2003/2004
4
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 n
client contemporaneamente
:Client
1
doIt()
:AccessProxy
3
doIt()
:Service
2
if (actualClient<=n) service.doIt()
else // messaggio di errore
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
:Service
:Client
1
doIt()
:Broker/Proxy
3
doIt()
2
:Service
:Service
Individuazione del
Service object
successivo
Ingegneria del Software - A.A. 2003/2004
5
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…
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’interazione
di oggetti Java distribuiti.
Ingegneria del Software - A.A. 2003/2004
6
Domande?
Ingegneria del Software - A.A. 2003/2004
7
Scarica

Ingegneria del Software Presentazione del pattern Proxy