Mobile App development mit Xamarin Christian Hassa (ch@techtalk.ch) Andreas Willich (awi@techtalk.ch) TechTalk Software AG
% der Bevölkerung mit Smartphone Smartphone Durchdringung >50% 34% 43% 54%
DACH und USA % der Bevölkerung mit Smartphone
Parallele Nutzung unterschiedlicher Geräte
Experten Projekte Agiles Training Zürich,Wien,Budapest
Mobile Apps in der Enterprise?
Enterprise Clientmix
Welche Plattform? 24% 50% 24% 23% 0% 2% Symbian (28 3%) Nokia/Series40 (2 15 9%) Samsung (7 4%) Blackberry (6 2%)
Mobile Web (Hybrid) Apps als Lösung?
Entwicklung pro Plattform
Plattform abstrahieren
Xamarin Ansatz
Native Mobile Apps mit C#/Xamarin 1. Bestehendes.NET/C# Know-How 2. Mächtige Plattform und Tools (Linq, Xml, Events/Delegates, Parallel Programming, Visual Studio/TFS, ) 3. Shared Code zwischen Plattformen
Benötigtes Know-How C#
Xamarin.iOS C#
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); };
Entwicklungsumgebung OS Mac OSX, Windows Windows UI Designer Android, ios (XCode) Android, ios (angekündigt) Build Debug Android, ios (via Xamarin Build Host auf Mac OSX) Android (Device und ARM/x86 Emulator) ios (Device und Emulator auf Mac)
Verfügbare Libraries unter Xamarin Assembly mscorlib.dll OpenTK.dll System.dll System.Core.dll System.Data.dll System.Data.Service.Client.dll System.Json.dll System.Runtime.Serialization.dll System.ServiceModel.dll System.ServiceModel.Web.dll System.Transactions.dll System.Web.Services System.Xml.dll System.Xml.Linq.dll Funktionsumfang SL OpenGL/OpenAL SL+ SL NET35- vollständiger OData Client SL SL SL (WCF) SL+ NET35 NET35- NET35 NET35 Mono.CompilerServic es.symbolwriter.dll Mono.Data.Sqlite.dll Mono.Data.Tds.dll Mono.Security.dll monotouch.dll Mono.Android.dll Für Compiler ADO.NET für SQLite TDS Protokoll Support Cryptographic API ios Bindings Android Bindings
Kompilierung und Ausführung ios App (C#) Xamarin.iOS Profil Assembly AOT ARM Binary Mono CLR für ios (Monotouch) ios APP ARM Binary ios APP Shared Code (C#,VB.NET) Android App (C#) Solution mit Projekten Multi-Platform Profil Assembly Xamarin.Android Profil Assembly IL Code für plattformspezifische Profile ios/cocoa Touch IL+JIT Mono CLR für Android (Monodroid) Android APK Android/Linux Kernel Android.* Java.* Android APK Dalvik
Architektur ios App View Controllers Storyboards/Segues Table Views Foundation/UIKit Portable Class Library ViewModel Business Logic Entities Android App Activities Repository/DAL CloudServiceAccess Intents ListViews, Adapters Android SDK
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
Portierbarer Code (Anteil in %) 72% 86% 46% 61% 70% 44%
Portabilität erhöhen
Bestehenden Code portieren
ALM Tool Chain und TFS Integration
Xamarin Lizenzierung und Kosten Lizenzierung pro Plattform/Entwickler Jahressubskription für Updates Business Subscription USD 999 Ebenso für Buildserver und ios Buildhost Mac Hardware für Xamarin ios Buildhost
Popularität
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 SDKs erforderlich Mächtige Werkzeuge und Plattform (.NET/VS) X-Plattform Code Sharing (50-80%) Hohe Popularität in der.net Community (Libraries!)
Xamarin Mobile App Development Kick-Start Kontaktieren Sie uns: Christian Hassa ch@techtalk.ch +41 (44) 365 79 39