ROCA: Modell für die native Webentwicklung

Seite 2: ROCA: Server, HTML

Inhaltsverzeichnis

Grundlage des ROCA-Ansatzes ist ein klares Bekenntnis zu den vier Basistechniken des Web:

  • HTTP zur Kommunikation zwischen Server und Client,
  • HTML als Auszeichnungssprache für Inhalte,
  • CSS zur visuellen Gestaltung und
  • JavaScript zur Aufwertung der Interaktionsmöglichkeiten.

Es handelt sich hierbei um strukturell völlig unterschiedliche Schichten, die klar voneinander abgetrennt sind und aufeinander aufbauen. Um ein reibungsloses Zusammenspiel zu ermöglichen, verkörpern diese Techniken die Prinzipien des Progressive Enhancement, also der sukzessiven Erweiterung von Features um einen stabilen Kern.

Dieses Fundament bilden bei Webanwendungen immer die mit HTML-Strukturen beschriebenen Inhalte. Das umfasst auch die Beziehungen zwischen den Teilaspekten der Anwendung, die in der Regel durch Links und Formulare ausgedrückt werden und somit die Interaktionsmöglichkeiten beschreiben. Optionale Erweiterungen mit CSS und JavaScript setzen auf diesem Grundgerüst auf, ohne dabei die Kernaspekte im Wesentlichen zu verändern.

Somit bleiben die Grundfunktionen nicht nur für die gesamte Bandbreite potenzieller Nutzer und User Agents des Web zugänglich, sondern es entsteht eine klare Aufteilung in unterschiedliche, voneinander weitgehend unabhängige Komponenten, die auch außerhalb eines spezifischen Kontexts verwendbar sind.

Hinzu kommt die Forderung nach bewusster Trennung der Verantwortlichkeiten von Server und Client. Der ROCA-Stil verlangt dabei eindeutig, dass die Hoheit über essenzielle Anwendungslogik allein beim Server liegt, jedoch mit besonderem Fokus auf den Erhalt größtmöglicher clientseitiger Flexibilität unter Wartungs- und Aufwandsaspekten.

Der Artikel beleuchtet im Folgenden die tragenden Komponenten in diesem Zusammenspiel.

In letzter Zeit lässt sich eine gewisse Rückbesinnung auf die – wenig überraschende – Erkenntnis beobachten, dass es sinnvoll ist, bei der Entwicklung von Websystemen der Architektur des Web zu folgen. Diese ist mit REST umfassend beschrieben. Im Geiste der Eingliederung anstelle der Bekämpfung von Webprinzipien und -Techniken geht ROCA davon aus, dass die Ressourcen des Servers "RESTful", also entsprechend dem REST-Architekturprinzip, gestaltet und umgesetzt werden.

So ist eine, wenn nicht die wichtigste Idee des REST-Prinzips, dass jede bedeutsame Ressource des Systems durch einen URI (Uniform Resource Identifier) identifiziert wird. Nimmt man noch die Anforderung nach statusloser Kommunikation zwischen Client und Server hinzu, erlaubt das den Nutzern, jederzeit und mit beliebigen Clients direkt zu einer Ressource zu springen oder zu ihr zurückzukehren. Dies bedeutet, dass die Verarbeitung einer Anfrage nicht mehr Kontext verwenden darf, als direkt im jeweiligen HTTP-Request angegeben. Das schließt insbesondere serverseitigen Zustand ("session state") aus, der bei der Verarbeitung einzelner Requests beigemischt wird.

Bei Beachtung dieser beiden REST-Grundregeln ermöglicht man beliebige Links – etwa durch Lesezeichen oder den Austausch zwischen Nutzern – sowie die uneingeschränkte Nutzung der Vor-, Zurück- und Neuladen-Schaltflächen des Browsers. Aber auch für die Indizierung der Inhalte durch Web-Crawler oder für die Integration verschiedener Anwendungen sind diese Punkte von großer Bedeutung.

Neben dieser REST-Architektur fordert ROCA zudem, dass jegliche Funktionen durch den Server vorgegeben wird. Somit darf es keine Anwendungslogik geben, die nur rein clientseitig implementiert ist. Das liegt nicht nur darin begründet, dass die Anwendung ohne den Einsatz von JavaScript lauffähig sein soll, sondern auch darin, dass lediglich der Server die notwendige Autorität haben sollte, um Nutzereingaben und Interaktionen endgültig zu bewerten.

Wie angedeutet, bildet HTML die Schnittstelle zwischen Server und Client. Dieses sollte sich nach Möglichkeit auf strukturierte, semantische, layout- und verhaltensunabhängige Beschreibung der Inhalte beschränken (häufig auch als "Plain Old Semantic HTML" oder POSH bezeichnet).

Eine objektive Betrachtung von HTML zeigt, dass es sich hierbei um ein ausdrucksstarkes Datenformat handelt, dessen Semantik standardisiert, gut verstanden und weit verbreitet ist. Wichtig hierbei ist jedoch die Trennung von Inhalten und präsentationsspezifischen Informationen. So sollte HTML frei von Layout-Fragmenten wie Formatierungsanweisungen sein. Letztere sollten stattdessen in CSS-Dateien ausgelagert werden. Gleiches gilt für Präsentationslogik, die ausschließlich in JavaScript-Dateien vorhanden sein sollte. Der HTML-Code sollte niemals direkt CSS oder JavaScript enthalten, sondern lediglich die entsprechenden Dateien referenzieren. Diese Trennung der Zuständigkeiten (Inhaltsstruktur, Layout und Präsentationslogik) dient vor allem der besseren Wartbarkeit und Wiederverwendbarkeit der entsprechenden Code-Fragmente.