Transcript

Architektur & EntwicklungMobiler Anwendungen

1

Agenda Mobile Plattformen

Programmiersprachen und Frameworks

Cloud-Anbieter

Architektur mobiler Anwendungen – Vorbetrachtungen

Android-App „Time Manager“

Android-App „Time Manager“ – Architektur

User Interface Patterns

Application Lifecycle

Integration mit anderen Apps

Lokale Persistenz

Anbindung an REST Schnittstelle

Asynchrone Kommunikation

Server-Push

Einbindung von fremden Diensten

Unit-Testing

Architektur JEE Backend

2

Architektur mobiler Anwendungen für die Cloud(«AMC»)

3

Virtual Developer Plattform

4

Mobile Plattformen

5

6

Source: Market study by International Data Corporation (IDC)

7

8

ProgrammiersprachenundFrameworks

9

10

Native Hybrid Web

Objective-C: iOS

Java: Android

C/C++: Android, WP8, Bada, BB10, iOS

C#: WP8

11

Native

Codename One: Java

Adobe Air Mobile: ActionScript

Mono/Monocross: C#

Corona: Lua

Qt: C++, QML

12

Native, Cross-Platform/Cross-Compile

HTML5, JavaScript, CSS3

Appcelerator

PhoneGap

IBM Worklight

RhoMobile

MobiOne

13

Hybrid

HTML5, JavaScript, CSS3

jQuery Mobile

jQTouch

Sencha Touch

Wink

Vaadin TouchKit

Qooxdoo

14

Web

Vergleich von Frameworks für die Entwicklung mobiler Anwendungen

15

http://www.markus-falk.com/mobile-frameworks-comparison-chart/

Cloud-Anbieter

16

17

Infrastructure as a Service

Plattform as a Service

Software as a Service

MiddlewareApp-Server

Anwendungen

ServerHardware

Benutzer

Internet

Anbieter SaaS

CRM

Salesforce

Oracle

Microsoft

SugarCRM

Shopsysteme

1&1

Strato

Hosteurope

Magento

...

18

Infrastructure as a Service

Plattform as a Service

Software as a Service

MiddlewareApp-Server

Anwendungen

ServerHardware

Anbieter IaaS

Amazon Web Services (AWS)

EC2

S3, Glacier, EBS, RDS, DynamoDB

Windows Azure

Google Cloud Platform

Computing Engine

Cloud Storage

… viele, viele andere Anbieter von virtuellen und dedicated Servern

19

Infrastructure as a Service

Plattform as a Service

Software as a Service

MiddlewareApp-Server

Anwendungen

ServerHardware

Anbieter PaaS

CloudBees: Java

Force.com: Apex

Google App Engine: Java, Python

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

20

Infrastructure as a Service

Plattform as a Service

Software as a Service

MiddlewareApp-Server

Anwendungen

ServerHardware

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

21

CloudBees

22

Sonderfall Jelastic

23

Architektur -Vorbetrachtungen

24

Always On?

25

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 unverzichtbar

26

Architektur-Optionen - Schichten

27

Client

Cloud/Server

Presentation

Logic

Business

Logic

Presentation

Logic

Presentation

Logic

Presentation

Engine

Business

Logic

Data Data Data Data

Business

Logic

Business

Logic

Presentation

Logic

Presentation

Logic

Business

Logic

Fat Ultra ThinThinSmart

Data Data Data

Android-App „Time Manager“

28

29

30

31

Funktionen der App

Gezeigt mit WireframeSketcher

Android-App „Time Manager“Architektur

32

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

33

USER INTERFACE PATTERNS

Architekturthemen

34

Model View Controller

35

Model View Presenter

36

Supervising Controller

Passive View

iOS

37

Traditional version of MVC as a compound pattern

Cocoa version of MVC as a compound design pattern

iOS – Beispiel Mediating Controller

38

iOS – Coordinating Controller

39

Coordinating controller as the owner of a nib file

Android – MVC mit Adaptern

40

Adapter

ModelArray

Cursor…

update

User event

readwrite

AdapterView

Android - MVC

41

WidgetsLayoutResources

ActivityFragment

EntitiesContentProvider

Android - MVP

42

Plain, self-made Classes ActivityFragmentWidgetsLayoutResources

EntitiesContentProvider

Windows 8, Windows Phone 8

43

APPLICATION LIFECYCLE

Architekturthemen

44

Android Activity/Application Lifecycle

45

Vergleich iOS/Android Lifecycles

46

Windows Phone 8 Application Lifecycle

47

INTEGRATION MIT ANDEREN APPS

Architekturthemen

48

Mobile OS

49

App ARegister scheme://

App BRegister scheme://

App CRegister scheme://

MyAppscheme://some/value

Android Standard Activity Actions

50

ACTION_MAIN

ACTION_VIEWACTION_ATTACH_DATA

ACTION_EDIT

ACTION_PICKACTION_CHOOSER

ACTION_GET_CONTENTACTION_DIAL

ACTION_CALLACTION_SEND

ACTION_SENDTO

ACTION_ANSWERACTION_INSERT

ACTION_DELETEACTION_RUN

ACTION_SYNC

ACTION_PICK_ACTIVITYACTION_SEARCH

ACTION_WEB_SEARCHACTION_FACTORY_TEST

Android Intent Filter

51

<activity android:name=".MyUriActivity"><intent-filter>

<action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="myapp" android:host="path" />

</intent-filter></activity>

LOKALE PERSISTENZ

Architekturthemen

52

SQLite mit Android

53

SQLite

ContentProvider

Controller(Activity, Fragment, Presenter)

SQLiteOpenHelper

Nutzung mit dem Android Loader

Framework

ANBINDUNG AN REST-SCHNITTSTELLE

Architekturthemen

54

Kommunikation und Datenformate

55

ClientServer

JSON oder XMLüber HTTP(S) Server Server

Twitter API hat XML Support eingestellt

56

JSON support onlyAPI 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.

CRUD und REST

57

Aktion Idempotent HTTP-Verb

Create Ja PUT

Create Nein POST

Read GET

Update Ja PUT

Update Nein POST

Delete DELETE

ASYNCHRONE KOMMUNIKATION

Architekturthemen

58

59

HTTP = Synchrones Protokoll

60

http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html

Android – Pattern für REST-Implementierung

61

Hintergrund-Prozess

Android – Pattern für REST-Implementierung

62

Hintergrund-Prozess

Android – Pattern für REST-Implementierung

63

Hintergrund-Prozess

SERVER-PUSH

Architekturthemen

64

Apple Push Notifications

65

Windows Phone Push Notifications

66

Client

Google Cloud Messaging (GCM)

67

RegistrationHandler

RegistrationHandler

1

2

3

4

regId

regId

regId

regId <-> username5

Server

1 regId

2

Message

Message

MessageHandler

3

Message

4

WebSockets

68

WebSockets

69

EINBINDUNG VON FREMDEN DIENSTEN

Architekturthemen

70

Optionen

71

My Server

3rd Party Serverz.B. DropBox

REST-API

REST-API

My App Credentials sind auf Server hinterlegt

- ODER –OAuth2

3rd PartyApp

Lokale Integrationz.B. Google Maps API

Credentials sind auf Gerät hinterlegt

- ODER -OAuth2

UNIT-TESTING

Architekturthemen

72

Testbarkeit von (Business-)Logik der App

73

Fragment

Activity

ContentProvider

Layout

Service

AsyncTask

Widget

Adapter

AdapterView

UnitTest

Testbarkeit von (Business-)Logik der App

74

Fragment

Activity ContentProvider

Layout

Service

AsyncTask

Widget

Adapter

AdapterView

Presenter

Interface

UnitTest

ArchitekturJEE Backend

75

JEE – Servlets, JAX-RS und EJB

76

Application Server

Jersey REST-Servlet

Web-Container

EJB-Container

Resource

Resource

Resource

Stateless Session Bean

Stateless Session Bean

Stateless Session Bean

Stateless Session Bean

DB

Request Response

Entity Manager

JAX-RS

HTTP(S)

1

23 4

5

6

Architektur mobiler Anwendungen für die Cloud(«AMC»)

77

Virtual Developer Plattform

78

top related