Architektur von REST–basierten Webservices

Werbung
Universität Bielefeld
28.11.2005
Architektur von REST–basierten Webservices
Referent
MARK ALTHOFF
REST
was invented by
ROY T. FIELDING
and
RICHARD N. TAYLOR
Hintergrund
Resource
Zugriff
Representation
State / Transfer
HTTP
Webservice
Zusammenfassung
Universität Bielefeld
Geschichtlicher Hintergrund von REST
• 1994-1995 taucht der Begriff «REST» erstmals in Roy T. Fieldings Dissertation auf
• Fielding führt den Erfolg des Webs auf einige Eigenschaften der verwendeten
Mechanismen und Protokolle zurück.
• IET entwickelte ein Modell, einen Architekturstil, der die Charakteristika vereinen sollte,
die das Web bisher so erfolgreich gemacht hatten.
• dieses idealisierte Modell wurde REST genannt und wurde der Grundstock für die moderne Webarchitektur und Vorlage für das Redesign von HTTP und URI.
• Das Web ist demnach eine Ausprägung des REST–Architekturstil
1/ 11
Hintergrund
Resource
Zugriff
Representation
State / Transfer
HTTP
Webservice
Zusammenfassung
Universität Bielefeld
Was bedeutet REST?
• Akronym für Representational State Transfer
• Es geht um Begriffe wie:
Representation (Representational)
Zustand(State)
Übergang(Transfer)
2 / 11
Hintergrund
Resource
Zugriff
Representation
State / Transfer
HTTP
Webservice
Zusammenfassung
Universität Bielefeld
Resources
• Alles von Interesse kann eine Resource sein:
• ein Text–Dokument, ein Bild, eine Video oder Audio Datei
• Kollektion von mehreren anderen Resources
• eine Person
• etc
• früher: direkte Verlinkung eines Dokumentes
• eine Resource im Sinne von «REST» ist ein Verweis auf ein Konzept
• Grund: Konsistenz des Zugriffs auf die Resource zu erhalten
• statische und varianzenreiche Resources
3 / 11
Hintergrund
Resource
Zugriff
Representation
State / Transfer
HTTP
Webservice
Universität Bielefeld
Zusammenfassung
Adressierung von Resources
• REST benutzt zur Adressierung von Resources URI (Uniform Resource Identifier)
URI
• einheitlicher Bezeichner für physikalische oder abstrakte Resources
• Aufbau:
URL
URN
http://www.werkzeuge.de/hammer
Protokoll
Server
Pfad
• Ziel: Identifier finden, der möglichst nah an der Semantik der Resource ist.
• ermöglicht Verlinkung vor der eigentlichen Existenz der Resource
4 / 11
Hintergrund
Resource
Zugriff
Representation
State / Transfer
HTTP
Webservice
Zusammenfassung
Universität Bielefeld
Representational State Transfer
• Zugriff, Modifikation und Transfer läuft über Representation der Resource
• Server hat internes Mapping, von einem Identifier auf einen Satz von Representationen
• Server kann auf Anfrage beliebige Formate zurückgeben:
Text, HTML, JPEG, GIF oder eben XML
• Loose Coupling (Implementierung transparent)
• Content Negotiation (Content-Type Aushandlung zwischen Server und Client)
5/ 11
Hintergrund
Resource
Zugriff
Representation
State / Transfer
HTTP
Webservice
Zusammenfassung
Universität Bielefeld
Beispiel Response für www.werkzeuge.de/hammer :
<?xml version=“1.0“?>
<p:Hammer xmlns:p=“http://www.werkzeuge.de“ xmlns:xlink=“http://www.w3.org/1999/xlink“>
...
<hammer id=“00101“ xlink:href=“http://www.werkzeuge.de/hammer/00101“/>
<hammer id=“00102“ xlink:href=“http://www.werkzeuge.de/hammer/00102“/>
<hammer id=“00103“ xlink:href=“http://www.werkzeuge.de/hammer/00103“/>
<hammer id=“00104“ xlink:href=“http://www.werkzeuge.de/hammer/00104“/>
...
</p:Hammer>
• machine-to-machine processing
• „Resources sind keine Inseln“ (Verlinkung für weitere Details)
6 / 11
Hintergrund
Resource
Zugriff
Representation
State / Transfer
HTTP
Webservice
Universität Bielefeld
Zusammenfassung
Representational State Transfer
• jede Representation versetzt den Client in einen «State» (Zustand)
• benutzen eines Hyperlinks gibt eine weitere Representation einer anderen Resource zurück
• Client wird erneut in einen «State» versetzt
Zitat Fielding zu dem Thema:
„ REST is intended to evoke an image of how a well-designed web application behaves:
a network of web pages (a virtual state machine), where the user progresses through an
application by selecting links (state transitions), resulting in the next page (representing
the next state of the application) being transfered to the user and rendered for their use.
“
7/ 11
Hintergrund
Resource
Zugriff
Representation
State / Transfer
HTTP
Webservice
Zusammenfassung
Universität Bielefeld
Die Rolle des Hyper-Text-Transfer-Protokoll bei REST
• beinhaltet ähnlich einer Datenbank Abfragesprache wie SQL einen Satz von Befehlen:
GET (SELECT)
POST (UPDATE)
PUT (INSERT)
DELETE (DELETE)
und andere
• Caching Funktion
• HTTP Authentifizierung
• REST ist HTTP Manipulation addressierbarer Resources
8 / 11
Hintergrund
Resource
Zugriff
Representation
State / Transfer
HTTP
Webservice
Zusammenfassung
Universität Bielefeld
Anforderungen an eine HTTP Message bei REST
• alle REST Interaktionen sind stateless !
• jeder Request muss alle notwendigen Informationen beinhalten
• Folge:
• Zustände müssen nicht gespeichert werden
• parallel laufende Interaktionen möglich
• Nachrichten können isoliert verstanden werden
• Fehlerzustände leichter behebbar
9 / 11
Hintergrund
Resource
Zugriff
Representation
State / Transfer
HTTP
Webservice
Zusammenfassung
Universität Bielefeld
Ein Webservices auf REST Basis
• Bestellservice von Werkzeugen unter: werkzeuge.de/bestellung
• Anbieter spezifiziert eine Bestellung in einem WSDL Dokument
• Client gibt Bestellung in einem Formular ein
• Bestellung wird konform des WSDL Dok. per HTTP POST an werkzeuge.de/bestellung geschickt
• Server antwortet mit URI für die neue Bestellung als Resource
• Bestellung wird zu einer gemeinsamen Resource zw. Server und Client
10 / 11
Hintergrund
Resource
Zugriff
Representation
State / Transfer
HTTP
Webservice
Zusammenfassung
Universität Bielefeld
Charakteristiken eines REST Webservices
• Client Server: pull-based Interaction: Konsumenten „ziehen“ vom Server Informationen
• Stateless: jede Anfrage muss alle Informationen beinhalten
• Cache: Netzwerkkommunikation gering zu halten
• Uniform Interface: einheitlicher Zugriff auf Resources per: HTTP POST, PUT, GET...
• Namentliche Resourcen: System aus Resource-Konzepten, die per URI addressiert sind.
• Verlinkung von Resources: ermöglicht dem Client das Springen von einem «State» zum nächsten
• In Schichten aufgebaute Komponenten: Cache oder Proxy für Performance und Sicherheit
11/ 11
Universität Bielefeld
Danke für die Aufmerksamkeit
Herunterladen