Post on 16-Mar-2016
description
Windows 8 for Existing.NET DevelopersTim HeuerProgram ManagerWindows Developer ExperienceMicrosoft Corporation
Some UI platforms I’ve worked on…• Access/VBA• Delphi• VB3->6 (+ASP)• “Cool”• VB.NET• Palm UI• Windows Forms• WAP• ASP.NET (WebForms)• SharePoint (WebParts)
• WAP• Windows Forms• SharePoint (WebParts)• ASP.NET (WebForms)• Windows Presentation
Foundation (WPF)• Silverlight• Windows Phone• Windows 8
The ones I liked…• Access/VBA• Delphi• VB3->6 (+ASP)• “Cool”• VB.NET• Palm UI• Windows Forms• WAP• ASP.NET (WebForms)• SharePoint (WebParts)
• WAP• Windows Forms• SharePoint (WebParts)• ASP.NET (WebForms)• Windows Presentation
Foundation (WPF)• Silverlight• Windows Phone• Windows 8
.NET
Windows 8
You already have the skills to build Windows 8 apps with C# and VB
Using the Windows Runtime feels natural and familiar from C# and Visual Basic
.NET Framework and WinRT .NET (and C# and Visual Basic) is alive and well Windows Runtime (Windows.*) native APIs projected
[DllImport(“kernel32.dll”)]
[DllImport("avicap32.dll", EntryPoint="capCreateCaptureWindow")]static extern int capCreateCaptureWindow( string lpszWindowName, int dwStyle, int X, int Y, int nWidth, int nHeight, int hwndParent, int nID);
[DllImport("avicap32.dll")] static extern bool capGetDriverDescription( int wDriverIndex, [MarshalAs(UnmanagedType.LPTStr)] ref string lpszName, int cbName, [MarshalAs(UnmanagedType.LPTStr)] ref string lpszVer, int cbVer);
// more and more of the same
The C# code you have to write today…
The C# code you get to write on Windows 8
using Windows.Media.Capture;
var ui = new CameraCaptureUI();ui.PhotoSettings.CroppedAspectRatio = new Size(4, 3);
var file = await ui.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (file != null) { var bitmap = new BitmapImage() ; bitmap.SetSource(await file.OpenAsync(FileAccessMode.Read)); Photo.Source = bitmap;}
.NET Framework and WinRT .NET (and C# and Visual Basic) is alive and well Windows Runtime (Windows.*) native APIs projected Can use C#/VB to create WinRT components Async everywhere: await/async keywords are your friends
Reference assemblies for .NET Framework Core Surface area specific for targeting Windows Runtime apps Redundancy removed when matching WinRT API exists
Portable Class Library projects Shared code at source and binary level Great for framework developers when possible
Extension methods bridge the gap between Windows Runtime and managed code
Streams Code SampleFileOpenPicker picker = new FileOpenPicker();picker.FileTypeFilter.Add("*");
StorageFile file = await picker.PickSingleFileAsync();
Windows.Storage.Streams.IInputStream inputStream = await file.OpenReadAsync();
System.IO.Stream stream = inputStream.AsStreamForRead();System.IO.StreamReader reader = new StreamReader(stream);
string contents = reader.ReadToEnd();
Understanding WinRT and Windows 8 for .NET Programmers
Podcast with Immo Landwerth, PM on the .NET Framework team
http://aka.ms/winrtnetfx
Development Patterns Code-behind approaches
Simpler apps Event-driven Coupling UI to logic
Model-View-ViewModel (MVVM) Separation of concerns More easily testable (TDD) Binding-driven No Behavior support currently
Using existing .NET patterns in Windows 8 apps
demo
In Windows 8, your .NET skills extend to C++ and JavaScript developers!
You can build Windows Runtime components that project into C++ or JavaScriptby following a few simple rules
Only the public types and members in your WinRT components need to follow these simple rules
API signatures must use only Windows Runtime typesStructs can only have public data fields
All types must be sealed (except XAML controls)Only supports system provided generic types
Visual Studio has built-in support for building Windows Runtime component projects using C#/VB
Building Windows Runtime Components in C#demo
Windows.UI.Xaml
Windows.UI.Xaml Same XAML primitives Optimized for touch experiences New UI Controls, familiar XAML structure
GridView/ListView SemanticZoom AppBar
Animation Library ThemeAnimations and Transitions
Extensibility Large 3rd party ecosystem still thriving
Tour around some new XAMLdemo
Resources and Localization Common resource APIs for WinRT No strongly-typed class generation from resource file
Folder- or file-based convention RESW == RESX in schema
Windows 8 only supports String resources XAML leverages a ‘merge’ technique for markup
String- and file-based resources compiled into PRI Visual Studio indexes all files for you
Resources and Localizationdemo
Data for Apps WCF endpoints
Add Service Reference still works! OData
In RP: Ultimate only, future will be NuGet/standalone Anonymous type binding Local Storage
IsolatedStorage Windows.Storage ESE (Jet) SQLite
Accessing DataBinding DataDebugging databinding
demo
Summary and More… You can use .NET for Apps and more Consider Portable Libraries as a method for code-share targeting
Create WinRT components when desired/needed
You can leverage your XAML/.NET skills to be successful quickly in the Windows Store!
You already have the skills to build Windows 8 apps with C# and VB