Mit Cloud Power werden Sie zum
Herzlich Willkommen! Christian Hassa Managing Partner TechTalk Software AG
Agenda Mobile App Development mit Xamarin Pause Azure Mobile Services Q&A 9h00-10h30 10h30-10h50 10h50-11h30 Agenda
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 (neu mit v3.0) Android, ios (neu mit v3.0) 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 auf der Microsoft Plattform Portable Class Libraries seit März 2011 (VS2010 Erweiterung) Reference Assemblies und.net NuGet Libs auf anderen Plattformen als Windows verfügbar (EULA).NET Foundation Vorgestellt auf der Build 2014 Open Source für.net Framework Komponenten (z.b. ASP.NET, Roslyn, )
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 Spezielle Lizenz für Buildserver/Buildhost Mac Hardware für Xamarin ios Buildhost
Xamarin Nachteile Seit v2 verbessert XCode wird benötigt (eigener ios Designer) Seltene Abstürze des Plugins (Bugfixes) Kein unified UI möglich (Xamarin.Forms) Offen Wie gut funktioniert der neue ios Designer? Apple Build Host (auch für ios Designer) Mehraufwand für portablen Code
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