Referat: Architektur und Entwicklung mobiler Anwendungen

78
Architektur & Entwicklung Mobiler Anwendungen 1

Transcript of Referat: Architektur und Entwicklung mobiler Anwendungen

Page 1: Referat: Architektur und Entwicklung mobiler Anwendungen

Architektur & EntwicklungMobiler Anwendungen

1

Page 2: Referat: Architektur und Entwicklung mobiler Anwendungen

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

Page 3: Referat: Architektur und Entwicklung mobiler Anwendungen

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

3

Page 4: Referat: Architektur und Entwicklung mobiler Anwendungen

Virtual Developer Plattform

4

Page 5: Referat: Architektur und Entwicklung mobiler Anwendungen

Mobile Plattformen

5

Page 6: Referat: Architektur und Entwicklung mobiler Anwendungen

6

Source: Market study by International Data Corporation (IDC)

Page 7: Referat: Architektur und Entwicklung mobiler Anwendungen

7

Page 8: Referat: Architektur und Entwicklung mobiler Anwendungen

8

Page 9: Referat: Architektur und Entwicklung mobiler Anwendungen

ProgrammiersprachenundFrameworks

9

Page 10: Referat: Architektur und Entwicklung mobiler Anwendungen

10

Native Hybrid Web

Page 11: Referat: Architektur und Entwicklung mobiler Anwendungen

Objective-C: iOS

Java: Android

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

C#: WP8

11

Native

Page 12: Referat: Architektur und Entwicklung mobiler Anwendungen

Codename One: Java

Adobe Air Mobile: ActionScript

Mono/Monocross: C#

Corona: Lua

Qt: C++, QML

12

Native, Cross-Platform/Cross-Compile

Page 13: Referat: Architektur und Entwicklung mobiler Anwendungen

HTML5, JavaScript, CSS3

Appcelerator

PhoneGap

IBM Worklight

RhoMobile

MobiOne

13

Hybrid

Page 14: Referat: Architektur und Entwicklung mobiler Anwendungen

HTML5, JavaScript, CSS3

jQuery Mobile

jQTouch

Sencha Touch

Wink

Vaadin TouchKit

Qooxdoo

14

Web

Page 15: Referat: Architektur und Entwicklung mobiler Anwendungen

Vergleich von Frameworks für die Entwicklung mobiler Anwendungen

15

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

Page 16: Referat: Architektur und Entwicklung mobiler Anwendungen

Cloud-Anbieter

16

Page 17: Referat: Architektur und Entwicklung mobiler Anwendungen

17

Infrastructure as a Service

Plattform as a Service

Software as a Service

MiddlewareApp-Server

Anwendungen

ServerHardware

Benutzer

Internet

Page 18: Referat: Architektur und Entwicklung mobiler Anwendungen

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

Page 19: Referat: Architektur und Entwicklung mobiler Anwendungen

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

Page 20: Referat: Architektur und Entwicklung mobiler Anwendungen

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

Page 21: Referat: Architektur und Entwicklung mobiler Anwendungen

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

Page 22: Referat: Architektur und Entwicklung mobiler Anwendungen

CloudBees

22

Page 23: Referat: Architektur und Entwicklung mobiler Anwendungen

Sonderfall Jelastic

23

Page 24: Referat: Architektur und Entwicklung mobiler Anwendungen

Architektur -Vorbetrachtungen

24

Page 25: Referat: Architektur und Entwicklung mobiler Anwendungen

Always On?

25

Page 26: Referat: Architektur und Entwicklung mobiler Anwendungen

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

Page 27: Referat: Architektur und Entwicklung mobiler Anwendungen

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

Page 28: Referat: Architektur und Entwicklung mobiler Anwendungen

Android-App „Time Manager“

28

Page 29: Referat: Architektur und Entwicklung mobiler Anwendungen

29

Page 30: Referat: Architektur und Entwicklung mobiler Anwendungen

30

Page 31: Referat: Architektur und Entwicklung mobiler Anwendungen

31

Funktionen der App

Gezeigt mit WireframeSketcher

Page 32: Referat: Architektur und Entwicklung mobiler Anwendungen

Android-App „Time Manager“Architektur

32

Page 33: Referat: Architektur und Entwicklung mobiler Anwendungen

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

Page 34: Referat: Architektur und Entwicklung mobiler Anwendungen

USER INTERFACE PATTERNS

Architekturthemen

34

Page 35: Referat: Architektur und Entwicklung mobiler Anwendungen

Model View Controller

35

Page 36: Referat: Architektur und Entwicklung mobiler Anwendungen

Model View Presenter

36

Supervising Controller

Passive View

Page 37: Referat: Architektur und Entwicklung mobiler Anwendungen

iOS

37

Traditional version of MVC as a compound pattern

Cocoa version of MVC as a compound design pattern

Page 38: Referat: Architektur und Entwicklung mobiler Anwendungen

iOS – Beispiel Mediating Controller

38

Page 39: Referat: Architektur und Entwicklung mobiler Anwendungen

iOS – Coordinating Controller

39

Coordinating controller as the owner of a nib file

Page 40: Referat: Architektur und Entwicklung mobiler Anwendungen

Android – MVC mit Adaptern

40

Adapter

ModelArray

Cursor…

update

User event

readwrite

AdapterView

Page 41: Referat: Architektur und Entwicklung mobiler Anwendungen

Android - MVC

41

WidgetsLayoutResources

ActivityFragment

EntitiesContentProvider

Page 42: Referat: Architektur und Entwicklung mobiler Anwendungen

Android - MVP

42

Plain, self-made Classes ActivityFragmentWidgetsLayoutResources

EntitiesContentProvider

Page 43: Referat: Architektur und Entwicklung mobiler Anwendungen

Windows 8, Windows Phone 8

43

Page 44: Referat: Architektur und Entwicklung mobiler Anwendungen

APPLICATION LIFECYCLE

Architekturthemen

44

Page 45: Referat: Architektur und Entwicklung mobiler Anwendungen

Android Activity/Application Lifecycle

45

Page 46: Referat: Architektur und Entwicklung mobiler Anwendungen

Vergleich iOS/Android Lifecycles

46

Page 47: Referat: Architektur und Entwicklung mobiler Anwendungen

Windows Phone 8 Application Lifecycle

47

Page 48: Referat: Architektur und Entwicklung mobiler Anwendungen

INTEGRATION MIT ANDEREN APPS

Architekturthemen

48

Page 49: Referat: Architektur und Entwicklung mobiler Anwendungen

Mobile OS

49

App ARegister scheme://

App BRegister scheme://

App CRegister scheme://

MyAppscheme://some/value

Page 50: Referat: Architektur und Entwicklung mobiler Anwendungen

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

Page 51: Referat: Architektur und Entwicklung mobiler Anwendungen

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>

Page 52: Referat: Architektur und Entwicklung mobiler Anwendungen

LOKALE PERSISTENZ

Architekturthemen

52

Page 53: Referat: Architektur und Entwicklung mobiler Anwendungen

SQLite mit Android

53

SQLite

ContentProvider

Controller(Activity, Fragment, Presenter)

SQLiteOpenHelper

Nutzung mit dem Android Loader

Framework

Page 54: Referat: Architektur und Entwicklung mobiler Anwendungen

ANBINDUNG AN REST-SCHNITTSTELLE

Architekturthemen

54

Page 55: Referat: Architektur und Entwicklung mobiler Anwendungen

Kommunikation und Datenformate

55

ClientServer

JSON oder XMLüber HTTP(S) Server Server

Page 56: Referat: Architektur und Entwicklung mobiler Anwendungen

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.

Page 57: Referat: Architektur und Entwicklung mobiler Anwendungen

CRUD und REST

57

Aktion Idempotent HTTP-Verb

Create Ja PUT

Create Nein POST

Read GET

Update Ja PUT

Update Nein POST

Delete DELETE

Page 58: Referat: Architektur und Entwicklung mobiler Anwendungen

ASYNCHRONE KOMMUNIKATION

Architekturthemen

58

Page 59: Referat: Architektur und Entwicklung mobiler Anwendungen

59

HTTP = Synchrones Protokoll

Page 60: Referat: Architektur und Entwicklung mobiler Anwendungen

60

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

Page 61: Referat: Architektur und Entwicklung mobiler Anwendungen

Android – Pattern für REST-Implementierung

61

Hintergrund-Prozess

Page 62: Referat: Architektur und Entwicklung mobiler Anwendungen

Android – Pattern für REST-Implementierung

62

Hintergrund-Prozess

Page 63: Referat: Architektur und Entwicklung mobiler Anwendungen

Android – Pattern für REST-Implementierung

63

Hintergrund-Prozess

Page 64: Referat: Architektur und Entwicklung mobiler Anwendungen

SERVER-PUSH

Architekturthemen

64

Page 65: Referat: Architektur und Entwicklung mobiler Anwendungen

Apple Push Notifications

65

Page 66: Referat: Architektur und Entwicklung mobiler Anwendungen

Windows Phone Push Notifications

66

Page 67: Referat: Architektur und Entwicklung mobiler Anwendungen

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

Page 68: Referat: Architektur und Entwicklung mobiler Anwendungen

WebSockets

68

Page 69: Referat: Architektur und Entwicklung mobiler Anwendungen

WebSockets

69

Page 70: Referat: Architektur und Entwicklung mobiler Anwendungen

EINBINDUNG VON FREMDEN DIENSTEN

Architekturthemen

70

Page 71: Referat: Architektur und Entwicklung mobiler Anwendungen

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

Page 72: Referat: Architektur und Entwicklung mobiler Anwendungen

UNIT-TESTING

Architekturthemen

72

Page 73: Referat: Architektur und Entwicklung mobiler Anwendungen

Testbarkeit von (Business-)Logik der App

73

Fragment

Activity

ContentProvider

Layout

Service

AsyncTask

Widget

Adapter

AdapterView

UnitTest

Page 74: Referat: Architektur und Entwicklung mobiler Anwendungen

Testbarkeit von (Business-)Logik der App

74

Fragment

Activity ContentProvider

Layout

Service

AsyncTask

Widget

Adapter

AdapterView

Presenter

Interface

UnitTest

Page 75: Referat: Architektur und Entwicklung mobiler Anwendungen

ArchitekturJEE Backend

75

Page 76: Referat: Architektur und Entwicklung mobiler Anwendungen

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

Page 77: Referat: Architektur und Entwicklung mobiler Anwendungen

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

77

Page 78: Referat: Architektur und Entwicklung mobiler Anwendungen

Virtual Developer Plattform

78