Marcus Munzert nennt und beschreibt die aktuell wichtigsten Plattformen und Programmiersprachen zur Entwicklung mobiler Anwendungen, als auch die aktuell wichtigsten Anbieter von Cloud-Diensten (IaaS, PaaS, SaaS). Er zeigt als Beispiel eine Android-App, die auf einen über die Cloud bereitgestellten entfernten Dienst (mit Java implementiert) zugreift.
17. 17
Benutzer
Internet
Anwendungen Software as a Service
Middleware
App-Server Plattform as a Service
…
Server
Hardware Infrastructure as a Service
18. 18
Anbieter SaaS
CRM Anwendungen Software as a Service
Salesforce Middleware
App-Server Plattform as a Service
Oracle
…
Microsoft
Server
Infrastructure as a Service
Hardware
SugarCRM
Shopsysteme
1&1
Strato
Hosteurope
Magento
...
19. 19
Anbieter IaaS
Amazon Web Services (AWS) Anwendungen Software as a Service
EC2 Middleware
App-Server
…
Plattform as a Service
S3, Glacier, EBS, RDS, DynamoDB
Server
Hardware
Infrastructure as a Service
Windows Azure
Google Cloud Platform
Computing Engine
Cloud Storage
… viele, viele andere Anbieter von virtuellen und
dedicated Servern
20. 20
Anbieter PaaS
CloudBees: Java Anwendungen Software as a Service
Force.com: Apex Middleware
App-Server
…
Plattform as a Service
Google App Engine: Java, Python
Server
Infrastructure as a Service
Hardware
Windows Azure: .NET
Red Hat OpenShift: Java
Amazon Elastic Beanstalk: PHP, Python, Ruby, .NET und
Java
Cloud Foundry (BETA): Java, Scala, Node.js und Ruby
Heroku: Ruby, Node.js, Clojure, Java, Python und Scala
Jelastic: Java und PHP
…
21. 21
Cloud Foundry
Startete als Plattform, um Spring-Applications auf
Amazon Web-Services zu betreiben
2011: VMware kauft Cloud Foundry
Cloud Foundry kann auf verschiedensten Cloud-
Infrastrukturen betrieben werden, sogar auf dem
eigenen Computer/Notebook
Ist zurzeit in Public BETA
26. 26
Mobile App Besonderheiten (im Vergleich zu
Desktop)
OS kann App und einzelne
Aktivitäten
Pausieren
Beenden
Fortsetzen
Neu Starten
Bestimmte Aktivitäten
erscheinen dem OS wichtiger
als die Anderen
Aktivitäten die benutzt
werden
Aktivitäten die sichtbar
sind
Daten die nicht auf Gerät
persistiert sind, können
jederzeit verloren gehen
Es gibt für den Benutzer keine
„Beende App“ Funktion
Offline-Fähigkeit einer App ist
27. 27
Architektur-Optionen - Schichten
Fat Smart Thin Ultra Thin
Client Presentation Presentation
Presentation Presentation
Logic Engine
Logic Logic
Data Data Data
Business
Business
Logic
Logic
Cloud/Server Presentation Presentation
Logic Logic
Business Business
Business
Logic Logic
Logic
Data Data Data Data
33. 33
Architektonische Themen in der „Time
Manager“ App
User Interface Patterns (MVC, MVP)
Application-Lifecycle
Integration mit anderen Apps, die auf dem mobilen Gerät
laufen (über URI Schemata)
Lokale Persistenz (SQLite)
Anbindung an eigene, entfernte REST Schnittstelle (JAX-RS,
JEE)
Asynchrone Kommunikation mit Server (über
Hintergrundprozesse auf moilbem Gerät)
Server-Push (Google Cloud Messaging, WebSockets)
Einbindung von fremden, entfernten Diensten
In der App (Google Maps, DropBox)
Auf dem Server (DropBox)
Unit-Testing
53. 53
SQLite mit Android
Nutzung mit dem
Controller Android Loader
Framework
(Activity, Fragment, Presenter)
ContentProvider
SQLiteOpenHelper
SQLite
54. 54
Architekturthemen
ANBINDUNG AN REST-
SCHNITTSTELLE
55. 55
Kommunikation und Datenformate
Client
JSON oder XML
über HTTP(S) Server Server Server
56. 56
Twitter API hat XML Support eingestellt
JSON support only
API v1.1 will support JSON only. We've been hinting at this for
some time now, first dropping XML support on the Streaming
API and more recently on the trends API. We've chosen to
throw our support behind the JSON format shared across the
platform. Consequently, we've decided to discontinue support
for XML, Atom, and RSS, which are infrequently used today. For
historical context, when we originally built the API all major
languages did not have performant, well vetted libraries
supporting JSON — today they do.
57. 57
CRUD und REST
Aktion Idempotent HTTP-Verb
Create Ja PUT
Create Nein POST
Read GET
Update Ja PUT
Update Nein POST
Delete DELETE
70. 70
Architekturthemen
EINBINDUNG VON FREMDEN
DIENSTEN
71. 71
Optionen
My Server
REST-API
My App Credentials sind auf Credentials sind auf
Gerät hinterlegt Server hinterlegt
- ODER - - ODER –
OAuth2 OAuth2
Lokale Integration
z.B. Google Maps API
3rd Party
App REST-API
3rd Party Server
z.B. DropBox
73. 73
Testbarkeit von (Business-)Logik der App
Fragment AdapterView
Layout Widget
Adapter
ContentProvider
UnitTest Activity Service
AsyncTask
74. 74
Testbarkeit von (Business-)Logik der App
Fragment AdapterView
Layout Widget
Adapter
Activity ContentProvider
Interface Service
UnitTest Presenter AsyncTask