Teach.NET Workshop Series Track 4: AP Computer Science with.NET and J#
Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online...
-
Upload
pablo-herald -
Category
Documents
-
view
214 -
download
0
Transcript of Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online...
![Page 1: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/1.jpg)
Cross Platform Mobile Development with .NET
Greg ShacklesSenior Software Engineer
OLO Online [email protected]
![Page 2: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/2.jpg)
MARQUEE SPONSOR
![Page 3: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/3.jpg)
PLATINUM SPONSOR
![Page 4: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/4.jpg)
PLATINUM SPONSOR
![Page 5: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/5.jpg)
GOLD SPONSOR
![Page 6: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/6.jpg)
GOLD SPONSOR
![Page 7: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/7.jpg)
GOLD SPONSOR
![Page 8: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/8.jpg)
GOLD SPONSOR
![Page 9: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/9.jpg)
GOLD SPONSOR
![Page 10: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/10.jpg)
GOLD SPONSOR
![Page 11: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/11.jpg)
SILVER SPONSORS
![Page 12: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/12.jpg)
Who is this guy?
• Greg Shackles• [email protected]• gregshackles.com• Twitter: @gshackles• Google+: plus.tl/gshackles• github.com/gshackles
![Page 13: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/13.jpg)
C# To Go
• http://shackl.es/CSharpToGo
![Page 14: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/14.jpg)
Market Share (US)
![Page 15: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/15.jpg)
Platform Languages
![Page 16: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/16.jpg)
Cross Platform Solutions
and many more…
![Page 17: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/17.jpg)
Spoiler Alert
![Page 18: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/18.jpg)
Different Platforms are…Different
!= !=
![Page 19: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/19.jpg)
![Page 20: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/20.jpg)
.NET to the Rescue!
![Page 21: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/21.jpg)
What is Mono?
• Implementation of the .NET CLR• Open source• Cross platform• Supports most of .NET 4.0• mono-project.com
![Page 22: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/22.jpg)
MonoTouch
• Bindings to CocoaTouch• .NET – LINQ, generics, etc (Moonlight)• AOT compilation• Linker• Memory management• Integrates with Interface Builder• ios.xamarin.com
![Page 23: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/23.jpg)
Mono for Android
• Wraps Java/Android API• .NET – LINQ, generics, etc (Moonlight)• Linker• Visual Studio 2010 or MonoDevelop• android.xamarin.com• http://xamarin.com/androidbeta
![Page 24: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/24.jpg)
Mono for Android Architecture
• Android/Managed Callable Wrappers• JNI bridges to talk between Android and Mono
![Page 25: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/25.jpg)
Mono for Android API
• .NET events replace listener interfaces• Action replaces Runnable• Enumerations• Properties• Attributes and tooling generate configuration• Uses standard Android resource files
![Page 26: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/26.jpg)
Why?
![Page 27: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/27.jpg)
![Page 28: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/28.jpg)
Sharing
![Page 29: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/29.jpg)
Reusability Story
UI
C#
Runtime
Platform
Silverlight
Business Logic
.NET
WP7 iOS
Mono
Android
MonoTouch Mono for Android
![Page 30: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/30.jpg)
Platform Comparison
• UI• Tooling– IDE– Designer– Emulator
• Multitasking / Lifecycle• Storage– File system– Database
• Shared Resources
![Page 31: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/31.jpg)
Comparison: Views
WP7 iOS Android
Format XAML XIB XML
Screen PhoneApplicationPage UIViewController Activity
Layout StackPanel N/A (manual) LinearLayout
List ListBox UITableView ListView
List Item ListBox.ItemTemplate UITableViewCell View
Data Source Binding UITableViewSource BaseAdapter
![Page 32: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/32.jpg)
Comparison: Navigation
Windows Phone 7
NavigationService.Navigate( new Uri("/NextPage.xaml?id=42", UriKind.Relative)));
iOS
NavigationController.PushViewController( new NextController(42), true);
Android
var intent = new Intent(); intent.SetClass(this, typeof (NextActivity)); intent.PutExtra(“id", 42);StartActivity(intent);
![Page 33: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/33.jpg)
Code Sharing Techniques
• Link files• Preprocessor directives
#if MONOTOUCH
• Messaging (publish/subscribe)• Abstraction• Third party libraries– sqlite-net– TinyIoC / TinyMessenger– MonoMobile.Extensions
![Page 34: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/34.jpg)
NYC Code Camp App
![Page 35: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/35.jpg)
App Architecture
Entities DataAccess Libraries Messaging ViewModels
CC.Core.MonoTouch CC.Core.MonoAndroid CC.Core.WP7
CodeCamp.Core
App.MonoTouch App.MonoAndroid App.WP7
![Page 36: Cross Platform Mobile Development with.NET Greg Shackles Senior Software Engineer OLO Online Ordering greg@gregshackles.com.](https://reader031.fdocuments.net/reader031/viewer/2022032516/56649c505503460f948f83ff/html5/thumbnails/36.jpg)
Questions?
15% Discount - Expires 10/31https://store.xamarin.com/?discount=NYC-Code-Camp-6