Agon Newsletter Ausgabe 01 / 2013.

Zurück

Mobile Clients für die Agon-Referenzarchitektur

Der Zugriff auf Unternehmensdaten erfolgt heute nicht mehr ausschließlich über die PC-Arbeitsplätze im internen Netzwerk, sondern zunehmend über mobile Endgeräte wie Smartphones und Tablets. Mobile Technologien sind immer wichtiger für die Integration in die Prozess- und Systemlandschaft vieler Kunden der Agon Solutions. Zusätzlich eröffnen sie neue Möglichkeiten für Vertrieb und Marketing.

Um diesem Trend gerecht zu werden, entwickelte die Agon Solutions eine eigene Referenzarchitektur (wir berichteten im Agon Newsletter 01/2012 ).

Im Rahmen einer mehrtägigen Agon School wurden die Teilnehmer in der Erstellung mobiler Softwarelösungen mit Android und Sencha Touch geschult. Der Workshop diente gleichzeitig als gelungener Proof of Concept, um die Multikanalfähigkeit der Agon-Referenzarchitektur in der Praxis unter Beweis zu stellen.

 

Backend-Services

Im Vorfeld der Veranstaltung wurden gemäß der Agon Referenzarchitektur Backend-Services zur Erfassung von Arbeitszeiten entwickelt und in die Google App Engine geladen.

Diese sind als RESTful Web Services implementiert. Dazu wird das Jersey-Framework genutzt. Der Aufruf der Web Services erfolgt über einen http- oder https-Request. Die Daten werden im JSON (= JavaScript Object Notation) Format übertragen, das ein kompaktes Format ist. Die Daten benötigen nicht viel Bandbreite und können somit von mobilen Anwendungen gut interpretiert werden.

Um eine Vermischung von fachlichen und technischen Daten und Methoden zu vermeiden, werden rein fachliche Objekte in einen sogenannten Wrapper übergeben, der wiederum mit technischen Zusatz-Daten angereichert wird. Die Daten können durch dieses Pattern von den Servicenutzern leicht in ihren fachlichen und technischen Kontext getrennt werden.

 

Abb. 1 Mobile RIA

Softwarearchitekturen für mobile Endgeräte

Für die Entwicklung einer Anwendung für Smartphones oder Tablet-PCs wurden im Workshop die folgenden 2 Architekturvarianten betrachtet:

1. Variante: Mobile RIA Webapplikationen mit Sencha Touch

RIAs nutzen HTML und für mobile Geräte spezialisierte JavaScript Bibliotheken wie Sencha Touch, um im Browser des Gerätes einen Client zu erzeugen, der einen Teil der Anwendungsfunktionalität enthält („Single Page Application"). Ein Zugriff auf native Funktionalitäten des Endgerätes ist über die HTML5 Spezifikation oder über zusätzliche Frameworks wie Phonegap ausführbar.

Sencha Touch ist ein auf ExtJS basierendes JavaScript-Framework. Es unterstützt RESTful Web Services und JSON-basierte Server-Kommunikation. Es wird keine spezielle API benötigt, um auf die Daten der Webservices im JSON-Format zuzugreifen.

Soll eine Mobile-Applikation auf möglichst vielen Geräten oder Betriebssystemen verfügbar sein, ist eine solche RIA eine gute Möglichkeit dies zu erreichen. Allerdings lassen sich RIA-Anwendungen, die für Browser auf Smartphones mit WebKit-Rendering Engine entwickelt wurden, auf herkömmlichen PC-Browsern wie dem Internet Explorer oder Firefox meist nicht darstellen. Daher ist jeweils für die Internetnutzung mit PCs und mobilen Endgeräten die Erstellung eines eigenen Clients (oder zumindest einer eigenen Variante) notwendig.

2. Variante: Native App für Android-Endgeräte

Abb. 2 Native App

Native Apps sind Applikationen, die speziell für ein bestimmtes Betriebssystem – z.B. Android – konzipiert wurden und dort installiert werden müssen. In der Regel ist eine solche App auf einem anderen Betriebssystem nicht lauffähig.

Die Verteilung und Installation solcher nativen Apps findet in der Regel über Stores und Markets wie google play statt. Android-Apps lassen sich alternativ auch per Installationsdatei auf einem Endgerät installieren (wie z.B. die Agon News App). 

Stehen Security, Echtzeit-Performance oder die umfangreiche Nutzung besonderer Merkmale und Funktionen des mobilen Endgerätes im Vordergrund, ist die Erstellung einer nativen App einer mobilen Webanwendung (noch) vorzuziehen. Solche besonderen Merkmale können z.B. die intensive Nutzung der Kamera, Bewegungssensoren, GPS-Nutzung oder das Senden von SMS oder Emails -ggfs. sogar mit Dateianhang- sein. Auch wenn eine Anwendung größere Datenmengen auf dem Gerät (beispielsweise auf der integrierten SQLite-Datenbank) speichern oder wenn sie regelmäßig offline genutzt werden soll, ist eine native App erste Wahl. Es ist allerdings zu erwarten, dass mit der zunehmenden Standardisierung von HTML5 mobile Webapplikationen zu den nativen Apps aufschließen.

Sollen mehrere Plattformen/Betriebssysteme durch native Apps angesprochen werden, bedeutet die Entwicklung mehrerer nativer Apps deutlichen Mehraufwand. In einem solchen Szenario sind mobile Webanwendungen vorzuziehen.

Android-Applikationen bringen, da sie in Java erstellt werden, den Vorteil der Wiederverwendung vorhandener Java-Libraries und Codes mit sich. So lässt sich der gemäß der Agon-Referenzarchitektur erstellte Business Layer mit der enthaltenen Geschäftslogik als Jar-File in eine Android-App importieren.

Der Vorteil ist eine clientseitige Validierung ohne redundanten Code oder Programmierung. Dies gewährleistet eine hohe Softwarequalität, gute Usability und schnelle Softwareentwicklung sowie deutlich reduzierten Netzverkehr, was im Mobile-Kontext wichtig ist.

 

Android = Java ?

Leider werden in Android nicht sämtliche Java-APIs unterstützt. Das JAXB-Framework ist beispielsweise in Android nicht lauffähig und damit auch nicht dessen Derivat Jersey. Daher wurde zum Aufruf der Rest-Services des Backend-Servers unter Android das Framework Restlet verwendet. Dieses ist leichtgewichtiger als Jersey und Service-Aufrufe sind leicht zu implementieren.

Abb. 3 Service-Aufruf der Android-App mittels Restlet

So wurde die Anbindung der lesenden und schreibenden Backend-Services sowie das Mapping von JSON in die Java-Objekte des Business-Layers im Workshop rasch erstellt. Die Teilnehmer konnten sich von nun an ausschließlich den Herausforderungen der mobilen Endgeräte wie Activities und Views, Time- und Datepicker oder der Erstellung von Adaptern zur Präsentation der ermittelten oder eingegebenen Daten widmen.

 

Der Workshop

Anlässlich eines Workshops zur Entwicklung von Mobile-Anwendungen wurden die anwesenden Teilnehmer nach einer theoretischen Einführung zum Thema Mobile-Entwicklung in zwei Gruppen unterteilt. Beide Gruppen erhielten dieselbe Aufgabe: Die Entwicklung einer Mobile-Anwendung zur Arbeitszeiterfassung unter Nutzung der bereits implementierten Web-Services. Sie sollten ihre Lösungen jedoch mit unterschiedlichen Techniken implementieren. Während eine Gruppe eine App für Android entwickelte, sollte für die andere Gruppe Sencha Touch das Framework sein. Nach einer kurzen Einführung konnten beide Gruppen schnell mit Design und Umsetzung der Applikationen beginnen.

Auf beiden Plattformen gelang die Backendanbindung problemlos und am Ende des Workshops konnten beide Gruppen funktionierende, wenn auch noch nicht vollständige Applikationen vorweisen. Über beide Applikationen können Arbeitszeiten und die Zuordnung zu Projekten problemlos erfasst und durch die Backend-Services gespeichert werden.

Abb. 4 Liste und Detailansicht mit Sencha Touch

Die erfassten Einträge werden in einer Liste dargestellt, aus welcher die Einträge zur weiteren Bearbeitung in einer Detailansicht ausgewählt werden können. Diese wurden auch gleich auf den Smartphones der Anwesenden begutachtet und eifrig getestet. Als Bonus weist die Android-App zusätzlich ein Konfigurationsmenü auf. In diesem kann der Anwender seine Login-Daten (Username und Passwort) zur Authentifizierung am Backend-Service erfassen und auf der in Android integrierten SQLite-Datenbank speichern. Die auf Sencha Touch basierende Applikation punktet mit einer stärker auf modernen grafischen Elementen basierenden GUI, die bereits beim Abschluss der School wie ein fertiges Produkt anmutete (s. Screenshots). Hier zeigt sich eine der großen Stärke von Sencha, die sehr umfängliche Bibliothek vorhandener, ansprechender GUI Widgets.

 

Fazit

Die Agon-Referenzarchitektur hat ihre Multikanalfähigkeit unter Beweis gestellt. Die Entwickler konnten die im Vorfeld erstellten Backendfunktionalitäten schnell in ihre Arbeit einbinden und sich auf das Wesentliche der Schulung – die Entwicklung von Oberflächen für den mobilen Anwendungskontext – konzentrieren. Die Trennung von Präsentation und Businesslogik ist gelungen. Insbesondere konnten die Teilnehmer aus erster Hand erfahren, welche jeweiligen Vor- und Nachteile die verschiedenen Architekturvarianten mit sich bringen. Dies ist wichtig, um im Kundenprojekt die passende und zukunftsfähige Architekturentscheidung treffen zu können.

Bei weiteren Fragen zu diesem Thema wenden Sie sich bitte an Matthias Storch.