2. SETH VALDETERO
Senior Development Consultant at Sparkhound
@valdetero
valdetero@gmail.com
linkedin.com/in/valdetero
github.com/valdetero
3. 1 What is Mono?
2 Who is Xamarin?
3 What can/can’t it do?
4 Cost?
AGENDA
5 DEMO
4. WHAT IS MONO?
• Mono
• Xamarin.iOS (MonoTouch)
• Xamarin Studio (MonoDevelop)
5. WHO IS XAMARIN?
• Started in May 2011
• 350,000 registered developers
• Adding 30,000 developers a month
• Released Xamarin 2.0 with rebranding, new pricing, and
new features
6. WHAT CAN’T IT DO?
• No JIT
• Limited Generics Support
• Generic Virtual Methods
• No generic subclasses of NSObjects are allowed
• P/Invokes in Generic Types
• No Dynamic Code Generation
• System.Reflection.Emit
docs.xamarin.com/guides/ios/advanced_topics/limitations
7. WHAT CAN IT DO?
• Leverage .NET Base Class Library
• async/await
• covariance/contravariance
• System.Net.Http
• Native and not interpreted code
• Same API as native
• Connect to TFS (Git)
• Documentation, recipes, forums
• Pre-built apps
• Monogame
• Components
xamarin.com/how-it-works
Since applications on the iPhone using Xamarin.iOS are compiled to static code, it is not possible to use any facilities that require code generation at runtime.Unlike traditional Mono/.NET, code on the iPhone is statically compiled ahead of time instead of being compiled on demand by a JIT compiler.Mono's Full AOT technology has a few limitations with respect to generics, these are caused because not every possible generic instantiation can be determined up front at compile time. This is not a problem for regular .NET or Mono runtimes as the code is always compiled at runtime using the Just in Time compiler. But this poses a challenge for a static compiler like Xamarin.iOS.Important:Do not confuse Reflection.Emit with Reflection. Reflection.Emit is about generating code dynamically and have that code JITed and compiled to native code. Due to the limitations on the iPhone (no JIT compilation) this is not supported.But the entire Reflection API, including Type.GetType ("someClass"), listing methods, listing properties, fetching attributes and values works just fine.
Mention PluralsightPre built Apps:Employee DirectoryiPhone, Android, and Windows native user interfacesUses MVVM, shares view-models across platformsSQLite data store with a .NET-based SQLite ORM on all platformsAbility to hook up to your enterprise backendField ServiceiPad, Android, and Windows RT native user interfacesMVVM to share view-models across platformsSQLite data store with a .NET-based SQLite ORM on all platformsAbility to hook up to your enterprise backendXamarin.Mobile to abstract access to camera across platformsSignaturePad component to collect signaturesStoryboard-based iOS UI layoutsAndroid UI is based on Android Fragments
RdioTouchDrawDraw a StickmanInfinite FlightiCircuitCalca
Permitted use: Companies with more than 5 employees need businessUnlimited App Size: Can’t P/Invoke third-party libraries and IL has to be less than 32kBusiness features: Support for in-house deployment, headless builds, WCF, and System.Data.SqlClient.