00 cross platform development with mono connect at #wp7au
TRANSCRIPT
![Page 1: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/1.jpg)
00
Cross Platform Development with Mono
Connect at http://is.gd/wpteched
#wp7au
![Page 2: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/2.jpg)
Cross Platform Development with Mono
Nick Randolph
WPH331
![Page 3: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/3.jpg)
Agenda
Mobile Landscape Cross platform choices .NET Framework and Mono Platform architectures
iOS Android Windows Phone / Windows 8
Separation of concerns with MVVM
![Page 4: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/4.jpg)
Mobile Landscape
Three PlatformsGlobal: 90%Australia: 95%
Ref: http://www.kantarworldpanel.com/Global/News/Android-maintains-its-European-domination
![Page 5: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/5.jpg)
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
![Page 6: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/6.jpg)
Application Platform Choices
UXFeatures
Cost
Native
Web Site
Web App
Native 1 or 2
Hybrid
Mono
![Page 7: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/7.jpg)
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)
![Page 8: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/8.jpg)
.NET Framework and Mono
.NET Abstraction across the underlying platformCode compiled to MSIL with runtime JIT
Windows Microsoft .NET FX Other platforms Mono
![Page 9: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/9.jpg)
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
![Page 10: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/10.jpg)
Windows Phone
Navigation Pages Uri based navigation with backstack
Design Layout in XAML Expression Blend
Page Lifecycle Application Events Page Methods
![Page 11: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/11.jpg)
demo
Windows Phone
Design in Expression BlendWire up events/code in Visual Studio
![Page 12: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/12.jpg)
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)
![Page 13: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/13.jpg)
demo
MonoTouch
MonoDevelop + XcodeOverview of Design and Development Environment
![Page 14: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/14.jpg)
Android
Navigation Activities + Views Activities launched as Intents
Design Layout is stored in axml MonoDevelop/VS Integrated Designer
Lifecycle Actvities events
![Page 15: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/15.jpg)
demo
Mono for Android
Visual Studio + Mono for Android PluginOverview of Design and Development Environment
![Page 16: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/16.jpg)
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
![Page 17: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/17.jpg)
demo
Windows Phone DataBinding
Separation of design (Blend) from code (Visual Studio)
![Page 18: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/18.jpg)
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
![Page 19: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/19.jpg)
demo
Navigating between ViewModels
![Page 20: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/20.jpg)
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
![Page 21: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/21.jpg)
demo
Dispatcher
![Page 22: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/22.jpg)
Device features
Devices expose similar features Contacts, Camera, Location….
Need platform specific code to access them Xamarin.Mobile
![Page 23: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/23.jpg)
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
![Page 24: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/24.jpg)
demo
Device Features and Third Party ComponentsXamarin.MobileInfragistics iOS Grid
![Page 25: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/25.jpg)
Ramping up for Windows Phone 8
Windows Phone Developer Bloghttp://windowsteamblog.com/windows_phone
![Page 26: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/26.jpg)
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
![Page 27: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/27.jpg)
Track Resources
http://dev.windowsphone.com
http://wp.msdeveloper.com.au
http://windowsteamblog.com/windows_phone
http://wpdownunder.com
![Page 28: 00 Cross Platform Development with Mono Connect at #wp7au](https://reader036.vdocument.in/reader036/viewer/2022062322/56649e9f5503460f94ba1aff/html5/thumbnails/28.jpg)
© 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.