ROCA: Modell für die native Webentwicklung

Die Resource-oriented Client Architecture stellt einen Gegenpol zum Trend dar, Logik auf den Client zu verlagern. Zum Einsatz kommen dabei vertraute Webtechniken, welche die Entwicklung zeitgemäßer, ergonomischer, robuster, skalierbarer und wartbarer Webanwendungen unterstützen.

In Pocket speichern vorlesen Druckansicht 2 Kommentare lesen
Lesezeit: 12 Min.
Von
  • Frederik Dohr
  • Till Schulte-Coerne
Inhaltsverzeichnis

Die Resource-oriented Client Architecture stellt einen Gegenpol zum Trend dar, Logik auf den Client zu verlagern. Zum Einsatz kommen dabei vertraute Webtechniken, welche die Entwicklung zeitgemäßer, ergonomischer, robuster, skalierbarer und wartbarer Webanwendungen unterstützen.

Die Entwicklung zeitgemäßer Webanwendungen, so scheint es, erfordert den Einsatz komplexer JavaScript-Logik auf Seiten des Browsers. Dabei hat die Renaissance von JavaScript in den letzten Jahren und die damit einhergehende Erweiterung von Browser-APIs die Möglichkeiten zur Verbesserung von Funktionen und Benutzerfreundlichkeit um ein Vielfaches erweitert. Entwickler stehen jedoch vor der Frage, wie sich diese effektiv und wartbar einsetzen lassen und wie die jeweiligen Verantwortlichkeiten auf Server und Client verteilt werden sollten.

Traditionell liegt das Gewicht klar auf Seiten des Servers: In den Urzeiten des Web war clientseitige Verarbeitung entweder nicht oder nur rudimentär möglich, sodass der Server nahezu alle Aufgaben übernahm. Spätestens seit der AJAX-Revolution verschiebt sich das Gewicht jedoch zunehmend auf die Clientseite, indem der Browser des Nutzers zunehmend mehr Aufgaben mit JavaScript übertragen bekommt.

Im Extremfall – meist in Form sogenannter Single Page Applications (SPAs) – dient der Server lediglich noch als Lieferant von Daten, üblicherweise in JSON-Form (JavaScript Object Notation). Diese Datenstrukturen werden durch Templates oder manuelle DOM-Manipulation in entsprechende UI-Elemente umgewandelt. Nutzereingaben werden direkt im Browser überwacht und die jeweiligen Datenstrukturen entsprechend unmittelbar aktualisiert. Somit übernimmt der Client alles vom Aufbau der UI bis hin zur Validierung von Nutzereingaben.

Diese Verschiebung der Verarbeitung in den Browser hat deutliche Vorteile: So lassen sich Reaktionszeiten durch die Vermeidung von Serveranfragen beziehungsweise durch deren Ausführung im Hintergrund massiv reduzieren. Weiterhin ermöglicht der Einsatz von JavaScript, Standardelemente der Benutzeroberfläche um- oder neu zu gestalten.

Allerdings bestehen auch ernstzunehmende Nachteile, wenn sich Entwickler in hohem Maße auf den Browser des Nutzers verlassen. Die Grundvoraussetzung ist hierbei die Unterstützung von JavaScript. Zwar stellt das in heutigen Mainstream-Browsern nur selten ein Problem dar, jedoch gibt es eine Vielzahl potenzieller User Agents, die JavaScript nicht oder nur bedingt unterstützen. Hierzu gehören die meisten Suchmaschinen, was die Indizierung von Inhalten – ein wichtiger Aspekt sowohl im Internet als auch in Intranets – bedeutend erschwert. Zudem ist für die clientseitige Verarbeitung der entsprechende Anwendungscode zunächst an den Client zu übertragen. Damit erhöht sich das anfängliche Datenaufkommen, was zumindest den initialen Seitenaufbau bedeutend verlangsamen kann.

Ein nicht zu vernachlässigender Aspekt ist auch, dass sich JavaScript im Vergleich zu HTML weitaus weniger fehlertolerant gibt, sodass unerwartete Interferenzen – ob Programmierfehler, Fehler beim Datentransfer (etwa durch Kompression bei Mobilverbindungen) oder Sicherheitsfilter – die Anwendung zum Stillstand bringen können. (Die Erfahrung der letzten Jahre zeigt, dass Letzteres nicht nur ein theoretisches Risiko darstellt: Auch große Konzerne wurden mehrfach von derartigen Problemen heimgesucht.)

Keines der beiden Extreme ist wünschenswert: Der reine Serveransatz genügt zweifellos nicht mehr den Ansprüchen zeitgemäßer Webanwendungen, aber auch der exzessiv clientlastige Ansatz stellt nach dem Verständnis der Autoren eine Überreaktion auf die neuen Möglichkeiten dar. Somit liegt, wie so oft, der optimale Weg irgendwo zwischen den Polen.

Aufbauend auf einem soliden Verständnis für die Architektur des Web sowie in Bezug auf etablierte Best Practices haben eine Reihe erfahrener Webentwickler, darunter die Autoren, einige Empfehlungen verfasst und unter dem Namen "Resource-oriented Client Architecture" (ROCA) veröffentlicht. Hierbei handelt es sich ausdrücklich weder um revolutionäre Erkenntnisse noch um die einzig akzeptierte Wahrheit. Stattdessen beschreibt ROCA einen bestimmten Ansatz bei der Webentwicklung.