5. Fazit
Wir haben die folgende Client-Server-Anwendung erstellt:

Um zur endgültigen Version des Codes zu gelangen, mussten wir zahlreiche Aspekte der Frameworks AngularJS und Spring 4 erläutern. Dieses Dokument kann daher zur Einarbeitung in die Verwendung dieser beiden Frameworks genutzt werden. In Abschnitt 1.3 wird erklärt, wo die Codes zu finden sind und wie man sie nutzt.
Wir haben gezeigt, dass die Client-Server-Anwendung in verschiedenen Umgebungen einsetzbar ist:
- als klassische Webanwendung;
- als ausführbare Binärdatei auf Android-Emulatoren;
Auch hier gilt: Dieses Tutorial bietet keinen vollständigen Überblick über die beiden Frameworks. Für Angular müssten sicherlich die dazugehörigen Testtools vorgestellt werden. Tests sind unverzichtbare Schritte beim Schreiben einer Anwendung. Die Tools rund um Angular ermöglichen es, diese zu automatisieren und in einen Prozess der kontinuierlichen Integration einzubinden.
Aus dieser Arbeit nehme ich zwei Punkte mit:
- Das Schreiben des Spring-Webdienstes war mäßig kompliziert. Von Anfang an war ich mit den Konzepten von Spring gut vertraut. Schwierigkeiten hatte ich lediglich bei der Absicherung des Webdienstes und später bei der Verwaltung der Header HTTP und CORS – zwei Bereiche, mit denen ich zuvor nicht vertraut war;
- Die Entwicklung des Angular-Clients war aus verschiedenen Gründen wesentlich komplexer:
- Ich hatte nur unzureichende Kenntnisse der Programmiersprache JavaScript und ihrer Möglichkeiten;
- es fiel mir schwer zu verstehen, wie asynchrone Programmierung im Browser funktioniert. Ich dachte dabei wie auf einem Server, wo diese Asynchronität durch die gleichzeitige Nutzung mehrerer Threads erreicht wird. Im Browser gibt es jedoch nur einen Thread, und asynchrone Aufgaben werden nacheinander und nicht parallel verarbeitet. Genauer gesagt können asynchrone Aufgaben zwar parallel ausgeführt werden (z. B. mehrere HTTP-Anfragen), aber die Ereignisse, die sie nach ihrer Beendigung auslösen, werden sequenziell verarbeitet. Es muss also keine parallele Ausführung mit den damit verbundenen zahlreichen Problemen verwaltet werden;
- Angular ist ein umfangreiches Framework mit zahlreichen Konzepten (MVC, Direktiven, Dienste, Modellbereich usw.). Es dauert lange, sich darin einzuarbeiten;
- Angular schreibt keine bestimmte Entwicklungsmethode vor. Um zum gleichen Ergebnis zu gelangen, kann man daher verschiedene Architekturen verwenden. Das ist verwirrend. Ich fühle mich wohler mit geschlossenen Frameworks, bei denen alle dieselben Entwurfsmuster (Design Patterns) verwenden. Daher habe ich ständig versucht, die Entwurfsmuster nachzubilden, die ich auf der Serverseite verwende. Ich bin mit dem Ergebnis zufrieden, da ich glaube, dass es reproduzierbar ist. Genau das habe ich gesucht. Ich weiß jedoch überhaupt nicht, ob ich von den „Best Practices“ von Angular abgewichen bin oder nicht;
Serge Tahé, Juli 2014.