28
1 Mobile Development in .NET mit Xamarin

Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

1

Mobile Development in .NET mit Xamarin

Page 2: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

2

Mobile Web (Hybrid) Apps

Vorteil: • Weniger Aufwand• Multi-Plattform• Web-Technologien

Nachteil: UX• Performance• UI Design• Gerätefunktionen

Page 3: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

3

Plattform abstrahieren

Page 4: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

4

Entwicklung pro Plattform

Page 5: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

5

Xamarin Ansatz

Page 6: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

6

Native Mobile Apps mit Xamarin

1. Bestehendes .NET Know-How

2. Mächtige Plattform und Tools(Linq, Xml, Events/Delegates, Parallel Programming, Visual Studio/TFS, …)

3. Shared Code zwischen Plattformen

Page 7: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

7

Benötigtes Know-How

.NET

Page 8: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

8

Xamarin.iOSC#

Page 9: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

9

Xamarin.Android

twitterListView.setOnItemClickListener (new OnItemClickListener () {public void onItemClick (AdapterView<?> parent, View view, int position, long id) {

Intent tweetDetails = new Intent (TwitterScreen.this, TweetDetailsScreen.class);tweetDetails.putExtra ("TweetID", TwitterFeed[position].ID);startActivity (tweetDetails);

}};

twitterListView.ItemClick += (s, e) => {var tweetDetails = new Intent (this, typeof (TweetDetailsScreen));tweetDetails.PutExtra ("TweetID", TwitterFeed[e.Position].ID);StartActivity (tweetDetails);

};

C#

Page 10: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

10

Entwicklungsumgebung

OS Mac OSX Windows

UI Designer Android, iOS

Build Android, iOS

Debug Android (Device und ARM/x86 Emulator)iOS (Device und Emulator auf Mac)

Page 11: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

11

Kompilierung und Ausführung

Android APK

Android/Linux KernelIL Code für plattform-

spezifische ProfileSolution mit

Projekten

iOS APP

Android APK

Shared Code(C#,F#,VB.NET)

Mono CLR für iOS(Monotouch)

Mono CLR für Android

(Monodroid)

Multi-PlatformProfil Assembly

Dalvik

Android.*Java.*

IL+JIT

AOT ARM Binary

iOS App (C#,F#)

Android App(C#,F#)

Xamarin.iOSProfil Assembly

Xamarin.AndroidProfil Assembly

iOS/Cocoa Touch

iOS APP

ARMBinary

Page 12: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

12

Architektur

Portable Class Library

ViewModel

Entities

Repository/DAL

Business Logic

CloudServiceAccessAndroid App

iOS App

View Controllers

Storyboards/Segues

Table Views

Foundation/UIKit

Activities

Intents

ListViews, Adapters

Android SDK

Page 13: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

13

DEMO

Page 14: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

14

Architektur

NuGet PackagePure/Advanced PCL

Android App

iOS App

View Controllers

Storyboards/Segues

Table Views

Foundation/UIKit

Activities

Intents

ListViews, Adapters

Android SDK

Android Class LibraryIPlatformDependentImplementation

iOS Class LibraryIPlatformDependentImplementation

Portable Class Library

ViewModel

Entities

Repository/DAL

Business Logic

IPlatformDependent

CloudServiceAccess

Page 15: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

15

Portierbarer Code (Anteil in %)

72%

61%

86%

70%

46%

44%

53%

53%

Page 16: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

16

Portabilität erhöhen

Portable Class Libraries für Xamarin• HTTPClient• Json.Net• MvvMCross• RestSharp• CouchBase• MailKit/MimeKit• …

Page 17: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

17

Portabilität erhöhen

Xamarin Components/Plugins• Battery Status• Compass• Barcode Scanner• Device Info• File System• Notifications• Messaging• Push Notifications• Text To Speech• Contacts• Leds• Microsoft Band• …

https://github.com/xamarin/XamarinComponents

Page 18: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

18

Xamarin.Forms

Eine UI Definition für alle 3 Plattformenin XAML (DataBinding)Verwendet native UI ControlsMischung möglich

Page 19: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

19

DEMO

Page 20: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

20

ALM Tool Chain und TFS Integration

• VCS nach Wahl• Xamarin Studio hat keinen TFS- VCS Support

• Builds• TFS 2015 Buildsystem• MacOS/Windows Agents• Tasks zum Builden

• Issues/Board• Keine Änderung

Page 21: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

21

Debugging

Voller Funktionsumfang:Breakpoints, Watches, Callstack, …

Unterstützung für:Android (Hardware & Emulator)iOS (Hardware & Emulator über Build Host)

Page 22: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

22

Testing

•Manuelles Testen•Unit Tests möglich

• Xamarin Test Cloud• ~2000 verschiedene Geräte zum Testen• Nicht in Lizenz enthalten

Page 23: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

23

Zusätzliche Tools von Xamarin

• Xamarin Android Player• Remote iOS Simulator• Xamarin.Forms Previewer (alpha)•Workbooks

Page 24: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

24

Xamarin Lizenzierung und Kosten

Lizenzierung bei Visual Studio Lizenz dabei auch bei Community Edition

Mac Hardware für Xamarin.iOS benötigt

Page 25: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

25

Xamarin Nachteile

StabilitätMehraufwand bei der Architektur, damit der Code portable bleibt

Page 26: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

26

Fazit

Mobile Apps dringen in alle Bereiche vor Android und iOS als dominante Plattformen

Schneller Einstieg für .NET/C# Entwickler Einarbeitung in Android/iOS SDK erforderlich

Mächtige Werkzeuge und Plattformen (.NET/VS) X-Plattform Code Sharing (50-80%) Hohe Popularität in der .NET Community (Libraries!)

Page 27: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

27

Popularität

Page 28: Mobile-App-Development mit Xamarin · Xamarin.Android Profil Assembly iOS/Cocoa Touch iOS APP ARM Binary. 12 Architektur Portable Class Library ViewModel Entities Repository/DAL Business

28

Fragen?