1 Mobile Development in.net mit Xamarin
Mobile Web (Hybrid) Apps Vorteil: Weniger Aufwand Multi-Plattform Web-Technologien Nachteil: UX Performance UI Design Gerätefunktionen 2
Plattform abstrahieren 3
Entwicklung pro Plattform 4
Xamarin Ansatz 5
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 6
Benötigtes Know-How.NET 7
Xamarin.iOS C# 8
Xamarin.Android C# 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); }; 9
Entwicklungsumgebung OS Mac OSX Windows UI Designer Build Debug Android, ios Android, ios Android (Device und ARM/x86 Emulator) ios (Device und Emulator auf Mac) 10
Kompilierung und Ausführung ios App (C#,F#) Shared Code (C#,F#,VB.NET) Android App (C#,F#) Solution mit Projekten Xamarin.iOS Profil Assembly Multi-Platform Profil Assembly Xamarin.Android Profil Assembly IL Code für plattformspezifische Profile AOT ARM Binary Mono CLR für ios (Monotouch) ios APP ios/cocoa Touch IL+JIT Mono CLR für Android (Monodroid) Android APK Android/Linux Kernel ARM Binary ios APP Android.* Java.* Android APK Dalvik 11
Architektur ios App View Controllers Storyboards/Segues Table Views Foundation/UIKit Android App Activities Intents ListViews, Adapters Android SDK Portable Class Library ViewModel Business Logic Entities Repository/DAL CloudServiceAccess 12
DEMO 13
Architektur ios App View Controllers Storyboards/Segues Table Views Foundation/UIKit Android App Activities Intents ListViews, Adapters Android SDK ios Class Library IPlatformDependent Implementation Android Class Library IPlatformDependent Implementation Portable Class Library ViewModel Business Logic Entities Repository/DAL CloudServiceAccess IPlatformDependent NuGet Package Pure/Advanced PCL 14
Portierbarer Code (Anteil in %) 72% 86% 46% 53% 61% 70% 44% 53% 15
Portabilität erhöhen Portable Class Libraries für Xamarin HTTPClient Json.Net MvvMCross RestSharp CouchBase MailKit/MimeKit 16
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 17
Xamarin.Forms Eine UI Definition für alle 3 Plattformen in XAML (DataBinding) Verwendet native UI Controls Mischung möglich 18
DEMO 19
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 20
Debugging Voller Funktionsumfang: Breakpoints, Watches, Callstack, Unterstützung für: Android (Hardware & Emulator) ios (Hardware & Emulator über Build Host) 21
Testing Manuelles Testen Unit Tests möglich Xamarin Test Cloud ~2000 verschiedene Geräte zum Testen Nicht in Lizenz enthalten 22
Zusätzliche Tools von Xamarin Xamarin Android Player Remote ios Simulator Xamarin.Forms Previewer (alpha) Workbooks 23
Xamarin Lizenzierung und Kosten Lizenzierung bei Visual Studio Lizenz dabei auch bei Community Edition Mac Hardware für Xamarin.iOS benötigt 24
Xamarin Nachteile Stabilität Mehraufwand bei der Architektur, damit der Code portable bleibt 25
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!) 26
Popularität 27
Fragen? 28