Ein Proxy dient dem Zweck, den Zugriff auf ein Objekt
mit Hilfe eines vorgelagerten Stellvertreterobjekts zu kontrollieren. Auch als
Surrogate bezeichnet, stellt ein Proxy einen Platzhalter für ein anderes
Objekt dar. Es gibt verschiedene Motivationen:
- Remote Proxy:
stellt einen lokalen Stellvertreter für ein
Objekt in einem anderen Adreßraum dar
- virtuelles Proxy:
erzeugt teure (speicher- oder
zeitintensive) Objekte erst bei wirklicher Benutzung
- Schutzproxy:
wird verwendet, um verschiedenen Objekten
unterschiedliche Zugriffsrechte auf ein Objekt zu gewähren
- Smart-Reference:
ist ein Ersatz für einen einfachen Zeiger,
der zusätzliche Aktionen wie Referenzzählung, Persistenzsicherung und Locking
ausführt
- Cache Proxy:
häufig angeforderte Objekte, die sich selten
ändern, werden zwischengespeichert, um die Ergebnisse der Anforderungen sofort
und kostengünstig liefern zu können
Gerade der letztgenannte Cache Proxy wird fast immer verwendet,
wenn im Internet gesurft wird. Dies kann entweder direkt im Browser eingestellt
werden, oder passiert ohne Wissen oder Bemerken des Nutzers schon beim ISP.
Vorrangiges Ziel ist es, statische Seiten, die häufig von Nutzern angefordert
werden, direkt nach der Anforderung liefern zu können, ohne sie nochmal von der
Zieladresse anfordern zu müssen. Beim ersten Aufruf einer solchen Seite kommt es
zu leichten Verzögerungen, bedingt durch das Leiten einer Anfrage über den Cache
Proxy. Wird die Seite danach wieder aufgerufen, so wird sie nicht mehr an der
Zieladresse angefordert, sondern gleich aus dem Cache an den Client (Browser)
geliefert. Etwas schwierig ist hier natürlich, wie der Cache Proxy entscheiden
soll, über welchen Zeitraum eine Seite gültig bleiben soll, d.h. unverändert
bleibt. Auch soll hier nicht verschwiegen werden, dass gerade ein Cache Proxy
ein einfaches Mittel ist, um Nutzer und ihre Surfgewohnheiten zu überwachen und
aufzuzeichnen.
Die allgemeine Struktur eines Proxymusters besteht aus 4
Bestandteilen. Der Klient stellt den anfragenden Teil dar, der die Schnittstelle
des Subjektes anwendet. Subjekt selbst stellt die Schnittstelle bereit, die
sowohl der Proxy, als auch das echte Subjekt verwenden. Der Proxy ist nun die
Zwischenstation, über den die Anfragen an das echte Subjekt gesendet werden. Er
ruft stellvertretend die Operation des echten Subjektes auf.
|
Abb. 1: Das Proxy Design Pattern
|
|