This document discusses Xamarin and Xamarin Forms, which allow building native mobile apps for iOS, Android, and Windows using C# and XAML. Xamarin Forms provides a shared UI toolkit and allows developing a single cross-platform UI that renders natively on each device. While Xamarin Forms apps may be slower and larger than pure native apps, it promotes code reuse and developing by feature rather than platform. The document outlines considerations around whether to use Xamarin Forms and provides resources for getting started.
10. Xamarin - Windows Phone
Compiled to IL
Uses built in phone runtime
No Mono / Xamarin SDK required
11. - Can I use my favorite SDK?
Yes
- Can I use my favorite Nuget package?
Sometimes
FAQ
12. - Are apps slower than native?
About the same *
- Are apps bigger than native?
Yes
FAQ
* https://medium.com/@harrycheung/mobile-app-performance-redux-e512be94f976
13. - Can I use async / await?
Yes
- Can I use “xyz” feature of .NET?
Yes *
FAQ
Background: .NET / WPF / AngularJS
Xamarin: 8 months ago
Forms: 6 months ago
Ordertracker: Customer - where is my order / Restaurant - where are my drivers
iOS
exposes CocoaTouch SDK (ex. UIKit)
Android
exposes Android SDK
interacts with native types via JNI
most of Mono.Android is just wrappers
Native / Siloed
Language / UI / Container
Abandoned: Facebook / LinkedIn
Problems: debugging, performance, animation
Combination: Instagram - timeline, JUST EAT - checkout
Cordova provides an abstraction over OS services like location
Makes cross-platform applications easier
No JIT
interacts with native types via JNI
most of Mono.Android is just wrappers
SDK: Google Analytics / AWS-SDK
iOS: binaries (.a) / headers (.h) + bindings
Android: .jar + bindings
Nuget: Autofac / JSON.Net
PCL or Android/iOS specific C# code
iOS: C++ / Swift faster , Objective-C slower
Android: C++ faster , Davlik same
Frameworks
iOS - generics special case
Xamarin Forms, a bit more so too.
Dynamic Runtime Language - NO
Generics - Of Course!