Mobile Development in .NET Mit Xamarin
Total Page:16
File Type:pdf, Size:1020Kb
Mobile Development in .NET mit Xamarin 1 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 Android, iOS Build Android, iOS Debug Android (Device und ARM/x86 Emulator) iOS (Device und Emulator auf Mac) 10 Kompilierung und Ausführung AOT ARM Binary ARM iOS App Xamarin.iOS Mono CLR für iOS Binary (C#,F#) Profil Assembly (Monotouch) iOS APP iOS APP iOS/Cocoa Touch Shared Code Multi-Platform (C#,F#,VB.NET) Profil Assembly IL+JIT Android.* Java.* Mono CLR für Android App Xamarin.Android Android APK (C#,F#) Profil Assembly Android (Monodroid) Android APK Dalvik Solution mit IL Code für plattform- Projekten spezifische Profile Android/Linux Kernel 11 Architektur iOS App View Controllers Storyboards/Segues Portable Class Library Table Views ViewModel Foundation/UIKit Business Logic Entities Repository/DAL Android App CloudServiceAccess Activities Intents ListViews, Adapters Android SDK 12 DEMO 13 Architektur iOS App View Controllers iOS Class Library Storyboards/Segues IPlatformDependent Portable Class Library Implementation Table Views ViewModel Foundation/UIKit Business Logic Entities Repository/DAL Android App CloudServiceAccess Activities Android Class Library Intents IPlatformDependent IPlatformDependent ListViews, Adapters Implementation NuGet Package Android SDK 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.