Hot tuna - from Sean Cross
-
Upload
stuart-lodge -
Category
Technology
-
view
2.294 -
download
1
Transcript of Hot tuna - from Sean Cross
![Page 1: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/1.jpg)
Hot TunaCROSS PLATFORM DEVELOPMENT WITH .NET, XAMARIN AND MVVMCROSS
![Page 2: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/2.jpg)
Sean’s Guff Formerly CIO at Catalyst Risk ManagementCurrently unemployed
Personal shareware site atwww.sourceitsoftware.com
Blog atsourceitsoftware.blogspot.com
@seanrcross
![Page 3: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/3.jpg)
To cover•What are we trying to achieve
•Example
•Theory (boring!)
•Getting started with MvvmCross
•Plugins
•Platform specific stuff
•Summary
•Links
![Page 4: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/4.jpg)
The holy grail
![Page 5: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/5.jpg)
What is achievable
![Page 6: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/6.jpg)
Example – Lions Official (sorry)
![Page 7: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/7.jpg)
![Page 8: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/8.jpg)
The pieces•.net (duh)•Xamarin (iOS, Android, Mac)•Portable Class Libraries•MvvmCross
![Page 9: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/9.jpg)
Xamarin•Commercial products for C# development for non-Windows platforms
•Xamarin.Android
•Xamarin.iOS
•Xamarin.Mac
•Need business edition for VS integration @ $999 US each
![Page 10: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/10.jpg)
Xamarin Demo
![Page 11: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/11.jpg)
Portable Class Libraries•Create a single library that can be used by multiple .net frameworks
•Allows access only to functionality shared by all selected frameworks
•Does some nifty namespace mapping
•Makes cross platform development much easier
•Microsoft and 3rd party PCLs available (HttpClient, Imaging, JSON…)
![Page 12: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/12.jpg)
.net x.x
Portable Class LibraryShared functionality
Silverlight
![Page 13: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/13.jpg)
.net x.x
Windows Store
Portable Class LibraryShared functionality
Silverlight
![Page 14: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/14.jpg)
.net x.x
Windows Store
Portable Class LibraryShared functionality
Silverlight
Xamarin.XXXX
![Page 15: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/15.jpg)
PCL Demo Easy-peasy, lemon squeezy
It’s hard to find a good image of a class library
![Page 16: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/16.jpg)
Mvvm: Model – View Model - Model
![Page 17: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/17.jpg)
Mvvm: Key interfaces•INotifyPropertyChanged• RaisePropertyChanged(() => PropertyName );
•ICommand
•INotifyCollectionChanged (or ObservableCollection)
![Page 18: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/18.jpg)
Mvvm: Binding
![Page 19: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/19.jpg)
XAML Code
<StackPanel> <TextBox Text="{Binding Hello, Mode=TwoWay}" /> <TextBlock Text="{Binding Hello}" /> <Button Content="Click Me" Command="{Binding MyCommand}" /> <Button Content="Go Second" Command="{Binding GoSecondCommand}" /></StackPanel>
public class FirstViewModel : MvxViewModel{ private string _hello = "Hello MvvmCross"; public string Hello { get { return _hello; } set { _hello = value; RaisePropertyChanged(() => Hello); } }
public System.Windows.Input.ICommand MyCommand { get { return new Cirrious.MvvmCross.ViewModels.MvxCommand(DoMyCommand); } }
private void DoMyCommand() { Hello = Hello + " World"; }
public System.Windows.Input.ICommand GoSecondCommand { get { return new Cirrious.MvvmCross.ViewModels.MvxCommand(DoGoSecond); } } private void DoGoSecond() { ShowViewModel<SecondViewModel>(); }}
![Page 20: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/20.jpg)
MvvmCross•Cross Platform MVVM Development Framework
•Free, open source
•Supports• WP7,8• WPF• WinRT• Xamarin.Android• Xamarin.iOS• Xamarin.Mac
•AKA Mvx
![Page 21: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/21.jpg)
MvvmCross Architecture
![Page 22: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/22.jpg)
Using MvvmCross•Hard - download from github, compile, include references etc
•Easy - Nuget; look for MvvmCross Hot Tuna Starter Pack, and plugins
•Real Easy - NinjaCoder
![Page 23: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/23.jpg)
Getting started - Nuget
![Page 24: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/24.jpg)
Getting started - NinjaCoder
![Page 25: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/25.jpg)
Plugins•Convenient way to access platform functionality
•Use NinjaCoder or Nuget to add plugins
•Includes Accelerometer, Email, Files, Location, Messaging, Sqlite
•3rd party plugins available as well.
•Consume plugins using Dependency Injection or Service locator
![Page 26: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/26.jpg)
Plugins Demo
![Page 27: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/27.jpg)
Platform specific code•Describe functionality using an interface in .Core
•Create platform specific implementation in .xxxx
•Register implementation on app startup◦ Mvx.RegisterSingleton<ISettingsPersistance>(new SettingsPersistanceWPF());◦ Mvx.RegisterType<IGetRemoteData, RemoteDataWpf>();
•Consume plugins using Dependancy Injection or Service locator• persistance = Mvx.Resolve<ISettingsPersistance>();
![Page 28: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/28.jpg)
Platform specific example•Here is one that I prepared earlier
![Page 29: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/29.jpg)
Summary•PCLs let you use easily share code across multiple platforms
•Xamarin lets you use C# on Android, iOS and Mac
•MvvmCross wraps it all up to make it easy• Shared PCL that holds most functionality• Platform specific apps for views and dependant code
•Plugins let you easily add functionality in a cross platform friendly way
•Do your own platform dependant stuff using interfaces and IoC/Dependancy Injection
![Page 30: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/30.jpg)
Links - MvvmCross Stuart Lodge - MvvmCross Author
•Twitter @slodge
•Blog http://slodge.blogspot.co.uk/
•Videos http://www.youtube.com/user/MrHollywoof?feature=watch
•List of tutorial videos http://mvvmcross.wordpress.com/
•Repository https://github.com/slodge/MvvmCross
![Page 31: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/31.jpg)
Links - Xamarin•Website - http://www.xamarin.com/
•Samples - https://github.com/xamarin
•Mobile library - https://github.com/xamarin/Xamarin.Mobile
![Page 32: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/32.jpg)
Links – Ninja Coder•Adrian Sudbury – Ninja Coder Author
•Twitter @asudbury
•Blog http://adriansudbury.blogspot.co.uk/
•Ninja Coder http://visualstudiogallery.msdn.microsoft.com/618b51f0-6de8-4f85-95ce-a50c658c7767
![Page 33: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/33.jpg)
Links - Other http://www.hanselman.com/blog/CrossPlatformPortableClassLibrariesWithNETAreHappening.aspx
http://sourceitsoftware.blogspot.co.nz/
![Page 34: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/34.jpg)
Credits Mvvm Images from http://books.zkoss.org/wiki/ZK_Developer%27s_Reference/MVVM
![Page 35: Hot tuna - from Sean Cross](https://reader035.fdocuments.in/reader035/viewer/2022062300/554a4b5bb4c90531228b4660/html5/thumbnails/35.jpg)
Questions•Answers not guaranteed