00 cross platform development with mono connect at #wp7au
TRANSCRIPT
00
Cross Platform Development with Mono
Connect at http://is.gd/wpteched
#wp7au
Cross Platform Development with Mono
Nick Randolph
WPH331
Agenda
Mobile Landscape Cross platform choices .NET Framework and Mono Platform architectures
iOS Android Windows Phone / Windows 8
Separation of concerns with MVVM
Mobile Landscape
Three PlatformsGlobal: 90%Australia: 95%
Ref: http://www.kantarworldpanel.com/Global/News/Android-maintains-its-European-domination
Cross Platform Choices
Build native for every platform Build for 1 or 2 platforms
eg Instagram: iOS and Android only Build mobile web site Build mobile web application Build hybrid application
eg PhoneGap Build for reuse
eg Mono
Application Platform Choices
UXFeatures
Cost
Native
Web Site
Web App
Native 1 or 2
Hybrid
Mono
iOS• iPhone, iPad• Objective-C• C/C++• XCode
(Interface Builder)
Android• Phone, Slate• Java • C/C++• Eclipse
(Android designer)
Platforms and Technologies
Windows• Windows Phone,
Windows 8• XAML/C#• C/C++, HTML5• Visual Studio
(Blend)
.NET Framework and Mono
.NET Abstraction across the underlying platformCode compiled to MSIL with runtime JIT
Windows Microsoft .NET FX Other platforms Mono
Mono for iOS and Android
Derivatives of core Mono project Xamarin
MonoDevelop (OSX only) Xcode integration
MonoDevelop (OSX or Windows)Visual Studio integration (Windows
only)Android SDK integration
Windows Phone
Navigation Pages Uri based navigation with backstack
Design Layout in XAML Expression Blend
Page Lifecycle Application Events Page Methods
demo
Windows Phone
Design in Expression BlendWire up events/code in Visual Studio
iOS
Navigation ViewControllers + Views Push new instances onto navigation controller
Design Layout is stored in nib/xib Interface Builder
Lifecycle Initialisation methods (eg awakeFromNib) Methods for page events (eg viewDidAppear)
demo
MonoTouch
MonoDevelop + XcodeOverview of Design and Development Environment
Android
Navigation Activities + Views Activities launched as Intents
Design Layout is stored in axml MonoDevelop/VS Integrated Designer
Lifecycle Actvities events
demo
Mono for Android
Visual Studio + Mono for Android PluginOverview of Design and Development Environment
Separation of Concerns
Visual v's Logic division (MVVM) View how the content is presented ViewModel what content is being presented Model how data is stored, and accessed
demo
Windows Phone DataBinding
Separation of design (Blend) from code (Visual Studio)
Navigation
Navigation typically tied to platform implementation
View Implements actual navigation operation
ViewModel Invoke navigation
Need an abstraction (eg INavigator) that permits platform specific implementations
demo
Navigating between ViewModels
Hey, get off my UI Thread
User Experience is Paramount Don’t do long running operations on UI Thread
Background operations Callback when done
Again, platform specific mechanism for re-joining the UI Thread
Need an abstraction (eg IDispatcher) that permits platform specific implementations
demo
Dispatcher
Device features
Devices expose similar features Contacts, Camera, Location….
Need platform specific code to access them Xamarin.Mobile
Third party components
Many third party component manufacturers Telerik, Infragistics, DevExpress
Components are platform specific (and should be!!) Need to be able to integrate into mono applications Need to generate bindings to incorporate native
components
demo
Device Features and Third Party ComponentsXamarin.MobileInfragistics iOS Grid
Ramping up for Windows Phone 8
Windows Phone Developer Bloghttp://windowsteamblog.com/windows_phone
Related Content
WPH331, WPH234, WPH322, WPH323, WPH332, WPH333
Exhibition Hall – demo pods
70-599 Pro: Designing and Developing Windows Phone 7 Applications
Find Me Later At @btroam #wp7au
Track Resources
http://dev.windowsphone.com
http://wp.msdeveloper.com.au
http://windowsteamblog.com/windows_phone
http://wpdownunder.com
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the
part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.