namics Weblog
namics Weblog.
Persönliche Stimmen und Meinungen von Mitarbeiterinnen und Mitarbeitern.
namics @ www.flickr.com

Links

  • Sharepoint Weblog
  • about:namics
  • namics Website

AKTUELLE ARTIKEL

  • Firmenpolitik oder Sabotage
  • Erfolgsfaktoren für Intranet-Wikis in Unternehmen (Vortrag)
  • Zwei Fragen zu Online Kommunikation
  • Ich kann nicht mehr alles lesen, aber cool sieht es aus
  • Vortrag: Das Wiki wird erwachsen
  • Bei mehr als 1GB/Sekunde vorher melden: Die Wolkenfront ist da
  • Bildersuche nach Farbe (auf Basis von Flickr)
  • Vortrag auf dem ECM World Summit
  • Gleichberechtigte Sichten im Intranet
  • Pragmatisches User Centered Design bei bahn.de

Kategorien

  • Accessibility
  • Blogging
  • Business
  • CEO-Post
  • Collaboration
  • Design
  • Fehlermeldungen
  • Gesellschaft
  • Information Retrieval
  • Lotusphere
  • Mobile
  • Online Marketing
  • Orbit-iEX
  • Project Management
  • SEO+SEM
  • Technologie
  • Vorträge
  • Web Analytics

Archive

  • November 2008
  • Oktober 2008
  • September 2008
  • August 2008
  • Juli 2008
  • Juni 2008
  • Mai 2008
  • April 2008
  • März 2008
  • Februar 2008
  • Januar 2008
  • Dezember 2007
  • November 2007
  • Oktober 2007
  • September 2007
  • August 2007
  • Juli 2007
  • Juni 2007
  • Mai 2007
  • April 2007
  • März 2007
  • Februar 2007
  • Januar 2007
  • Dezember 2006
  • November 2006
  • Oktober 2006
  • September 2006
  • August 2006
  • Juli 2006
  • Juni 2006
  • Mai 2006
  • April 2006
  • März 2006
  • Februar 2006
  • Januar 2006
  • Dezember 2005
  • November 2005
  • Oktober 2005
  • September 2005
  • August 2005
  • Juli 2005
  • Juni 2005
  • Mai 2005
  • April 2005
  • März 2005
  • Februar 2005
  • Januar 2005
  • September 2004
  • August 2004
  • Juli 2004
  • Juni 2004
  • Mai 2004
  • April 2004
  • Februar 2004
  • Februar 2003

XML und Mumbo Jumbo

  • namics ag
  • namics ag
  • namics ag
  • Atom Feed
  • RSS 2.0 Feed
  • Creative Commons License
    Dieses Weblog untersteht der Creative Commons Lizenz
  • Powered by Movable Type 3.35
« Bloglines Plumber | Übersicht | Happy Birthday Louis Braille! »
04
Jan
Ein guter Architekturstil: REST
gepostet von Jürg Stuker am 04.01.2006 um 00:38

Als der Autor André Kaminski im Alter von 63 Jahren mit Nächstes Jahr in Jerusalem seinen ersten Bestseller geschrieben hatte, fragte ein eifriger Journalist, weshalb es keinen früheren bekannten Werke von ihm gibt. Die Antwort: "Zuerst müssen sie lesen, dann schreiben...".

Das gilt wahrscheinlich auch für Roy T. Fielding, Chief Scientist bei Day und Miterfinder der zwei wohl wichtigsten Internet-Standards: HTTP (RFC 2616, RFC 2145, RFC 2068, RFC 1945) und URI (RFC 2396, RFC 1808) und noch einige Papiere und Software mehr. Er schrieb mit 35 Jahren seine Dissertation mit dem Titel: Architectural Styles and the Design of Network-based Software Architectures. Das zentrale Konzept drin ist REST (Representational State Transfer) und das ist gut zu wissen.

Stark vereinfach geht es um gute Adressierung im Internet und zwar nicht als neuer Standard, aber als korrekte Anwendung der vorhandenen Standards wie HTTP, URL, MIME Types u.a. Es geht etwa so:

1. Eine Ressource ist ein logisches Ziel welches immer gleich ist. Sie ist einfach verständlich und memorisierbar beschrieben. Beispielsweise http://www.namics.com/leistungen/produkte

2. Die Repräsentation ist die konkrete (physische) Antwort auf die Anfrage nach einer Ressource. Im Bezug auf das Beispiel oben ändern sich die namics Produkte über Zeit oder es gibt möglicherweise verschiedene Instanzen dafür (Sprachen, Clientcode u.a.). Der Pfad zur Resource bleibt gleich.

Was ist wichtig bei einer Ressource resp. dem Pfad dorthin?

a) Eine Ressource ist für Menschen (d.h. sprechend) und technologienbeutral beschrieben. Also ohne PHP -Endung, da die Implementierung von PHP auf APSX ändern könnte (oder was auch immer). Es muss stabil bleiben.

b) Keine HTML-Endung, da je nachdem wer/wie anfrägt, soll nicht HTML aber bspw. XML oder PDF geliefert werden. Für den Entscheid was ausgeliefert werden soll, gibt es im HTTP Request Header Feld mit Accept* die Angabe, was bevorzugt ist. Welches Format, welche Sprache, welche Codierung etc. In einer Idealen Welt entscheidet der Client was er will und nicht die Adresse der Anfrage.

c) Die Interaktion erfolgt immer durch den Client

d) Der Aufruf soll zustandslos sein resp. der Request selbst muss alle Zustandsinformationen beinhalten (Cookie ist erlaubt, da im Request drin aber mit den Daten und nicht einer ID zu einer Serversession)

e) Caching gehört unterstützt resp. korrekt gesteuert

f) Alle Arten die interaktion erfolgt über die Standardmethodem im HTTP (GET, POST, PUT, DELETE)

g) URI als universelles Adressierungssystem

Das ist sehr theroetisch beschrieben, aber in Kurzform geht es um: Gute URL die immer funktionieren, von mir schon als sprechende oder real speaking URLs bezeichnet. Natürlich nur bei Anwendungen, wo dies auch so funktioniert... Beispiele:

>> http://www.technorati.com/search/stuker

>> http://map.search.ch/bern

>> http://tel.local.ch/zh/namics.html

>> http://www.flickr.com/photos/tags/namics/

>> http://www.bloglines.com/myblogs

>> geht aber auch für komplexere Sachen wie beispielsweise ein Yahoo-API.


Immer sehr klar was zurückkommt und immer funktionierend. Und hier für Leute die gerne lesen die Diss, ein ganzes Wiki zum Thema eine Linksammlung bei Paul Prescod und eine Mailingliste auf welcher auf Roy drauf ist.


TRACKBACK

TrackBack URL for this entry:
http://blog.namics.com/mt/mt-tb.cgi/344

KOMMENTARE

... soll man daraus schliessen das man keine Sessions benutzen soll und jeweils immer alle daten über Cookies beim client speichern? ist das sicherheitstechnisch nicht fraglich vorallem wenn nicht immer SSL verschlüsselung gebraucht wird?

gepostet von bloggerli am 04.01.06 03:58

Ist der Punkt "Keine HTML-Endung", denn", denn "der Client entscheided was er will", nicht widersprüchlich mit dem Konzept der sprechenden URLs?

Wenn die gleiche URL einmal ein HTML Dokument schickt und mit nem anderen "Client" z.B. die PDF Version davon, ist das doch genau so irritierend, wie wenn verschiedene Sprachversionen unter derselben URL ausgeliefert werden.

gepostet von chregu am 04.01.06 06:59

@Valentin.

Als ich mich eingelesen habe, fragte ich mich dieselbe Sache ziemlich früh... Ich kann doch wohl kein eBanking mit Query-Parametern machen. Gefunden habe ich dann einen Post von Fielding, welcher mir die Cookie-Variante offen liess (http://groups.yahoo.com/group/rest-discuss/message/3583).

Als ich damit noch nicht alle meine Bedenken ausgeräumt habe, schrieb ich in den Post "Natürlich nur bei Anwendungen, wo dies auch so funktioniert...". Das sind aber immerhin einige ;-)

gepostet von Jürg Stuker am 04.01.06 08:06

@ Chregu

Teils auf Deiner Seite und Teils hin- und hergerissen. Ich habe mal geschrieben, wie ich Roy verstsanden habe... er weiss so Sachen ja. Vielleicht habe ich auch falsch verstanden.

Bei HTML und PDF ist das eher zu Gunsten von Auszeichen. Wie ist es aber bei HTML 3.x, 4.x und XHTML? Vielleicht sind die Client heute auch doof gemacht. Im Accept Header könnte ich die Media Types ja eigentlich klar vorgeben... das UI des Clients gibt es aber nicht wirklich her.

Es gibt je immer noch den Unterschied zwischen "Ressource" und "Repräsentation". Aber so wie ich interpretiere darf ich nicht redirecten auf eine spezifische URL.

Als: Grundsätzllich ist "let the user decide" ja doch das Beste... aber wenn es halt keinen Knopf hat ;-) Da ist Roy möglicherweise der heutigen Realität ein bisschen voraus.

gepostet von Jürg Stuker am 04.01.06 09:52

Hi everyone! I think your site is very interesting and useful. I always bookmarked it.

gepostet von osru am 11.05.06 14:00

Gute Seite danke für die Informationen.

gepostet von frank am 05.12.06 02:25

KOMMENTAR SCHREIBEN

Name:

E-Mail Adresse:

URL:

Bitte das Ergebnis von 1 + 2 als Ziffer (Spamschutz):