An introduction to windows 8 development
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
865
On Slideshare
865
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
17
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Thinking about the future with Windows 8 SILVERLIGHTSHOW.NET WEBINARS SERIES GILL CLEEREN, 29th November 2011 www.snowball.be - gill.cleeren@ordina.be - @gillcleeren
  • 2. About myself... • Gill Cleeren • .NET Architect @Ordina (www.ordina.be) • Microsoft Regional Director • Silverlight MVP • Speaker (TechDays, TechEd, DevReach, DevDays, NDC Norway, Telerik Usergroup tour Sweden, UK and Scotland...) • Visug user group lead (www.visug.be) • Author (Silverlight 4 Data and services cookbook, 15 MVPs book), SilverlightShow articles – And finishing Silverlight 5 cookbook now! • Blog: www.snowball.be • Email: gill@snowball.be • Twitter: @gillcleeren
  • 3. Warning! I have a cold... Luckily for you, this is not contagious over a webinar 
  • 4. Some practical stuff • Ask questions through Q&A window – We’ll answer them after the session or by personal mail • A link to the video recording will be sent to you
  • 5. XAML: a 4-day Training in London, UK • Master XAML, Silverlight, WPF, WP7 and Windows 8! • February 20th  24th, London, UK • Organized by CompletIT and Ordina • More info via trainings@completit.com www.silverlightshow.net/trainings/training_london0212.aspx
  • 6. Agenda • What did we see at BUILD? – Hello Windows 8 • What is WinRT? – How do we write Metro apps • Leveraging tomorrow what we know today – C# and .NET in Metro-style apps – XAML for Metro-style apps
  • 7. CHRISTMAS EVE IN SEPTEMBER What did we get at BUILD?
  • 8. Before BUILD... We had... – Desktop apps with .NET • WPF – Web apps with .NET • ASP.NET/ASP.NET MVC • Silverlight
  • 9. At BUILD, we got... • Steven Sinofsky annoucing hardware – Including Windows 8 running on ARM
  • 10. At BUILD, some got... It’s possible to buy this device now with Windows 7, costs around $1200 Donations welcome on paypal: gill@snowball.be ;-)
  • 11. At BUILD, we got... • Windows 8 – And everyone can get it from dev.windows.com
  • 12. At BUILD, we also got... • “Metro apps” • Windows Runtime (aka WinRT) • Visual Studio Express 2011 – Only for building Metro-style apps • .NET 4.5 • Visual Studio 11 Developer Preview – That’s “The Big One” • And more sessions than you can shake a stick at!
  • 13. DEMO Hello future aka “The demo of Windows 8”
  • 14. WINDOWS RUNTIME (WINRT) Opening Windows to managed developers
  • 15. The Windows Runtime is the solid, efficient foundation for building great Metro style apps, giving you access to Windows the language of your choice
  • 16. Windows 8 Windows Kernel Services JavaScript (Chakra) C/C++ C#, VB Metro style Apps Communication & Data Application Model Devices & Printing Windows Runtime APIs Graphics & Media XAML HTML / CSS HTML JavaScript C C++ C# VB Desktop Apps Win32 .NET SL Internet Explorer
  • 17. Devices SensorsGeolocation Portable NFC Communications & Data Contracts XML Web SMSNetworking Notifications Local & Cloud Storage Streams Background Transfer User Interface HTML5/CSS XAML DirectX Controls Input Accessibility Printing Data Binding TilesSVG Fundamentals Application Services Authentication Cryptography Globalization Memory Management Threading/Timers Media Visual Effects Playback PlayToCapture
  • 18. Windows Runtime Architecture Windows Metadata & Namespace Language Projection Windows Core Windows Runtime Core XAML Storage …Network UI Pickers MediaControls Metro style app Runtime Broker Language Support (CLR, WinJS, CRT ) Web Host (HTML, CSS, JavaScript)
  • 19. Why WinRT was born... • We had Win32 APIs for a long time • It wasn’t a good idea to just give these to developers to build Windows 8 apps – Developers want IntelliSense, debugging... – Developers want to use the language of their choice  Microsoft doesn’t force the developer in using a certain technology or language
  • 20. So WinRT is... • A huge improvements in the developer experience for the Windows developer – IntelliSense, debugging... • Fast and fluid (aka responsive) – Async is the new buzzword – No synchronous IO calls • Natural and familiar – New APIs – Language of choice • Based on apps – Apps can “communicate” through defined app-to-app contracts – Apps should keep running no matter what the OS version
  • 21. DEMO Hello World in WinRT in Visual Studio 2011 Express using HTML
  • 22. Windows Runtime Architecture Windows Metadata & Namespace Language Projection Windows Core Windows Runtime Core XAML Storage …Network UI Pickers MediaControls Metro style app Runtime Broker Language Support (CLR, WinJS, CRT) Web Host (HTML, CSS, Java Script)
  • 23. All new: Windows Metadata • We all know assembly metadata – ILDASM can open it for you – Use extensively in CLR to know what an assembly can do for you • Windows Metadata is the same concept but native
  • 24. Windows Metadata • Concise, complete description of the Windows Runtime • Generated natively from C++ or C#/VB Compiler • Efficient binary format derived CLI Metadata – Same structures, different meanings • Rich enough to allow multi-language projection generation • Full IntelliSense on statically known information – Same experience for managed developers as we have today
  • 25. The Windows Namespace • Windows.* Runtime objects are in a simple, unified, hierarchical namespace • Great IntelliSense and browsing in Visual Studio • One clear type for each function
  • 26. The WinRT API • Windows.ApplicationModel • Windows.Data • Windows.Devices • Windows.Foundation • Windows.Globalization • Windows.Graphics • Windows.Management • Windows.Media • Windows.Networking • Windows.Security • Windows.Storage • Windows.System • Windows.UI[.Xaml] • Windows.Web * Top level namespaces only
  • 27. DEMO Same app but now using C#
  • 28. Windows Runtime Architecture Windows Metadata & Namespace Language Projection Windows Core Windows Runtime Core XAML Storage …Network UI Pickers MediaControls Metro style app Runtime Broker Language Support (CLR, WinJS, CRT) Web Host (HTML, CSS, JavaScript)
  • 29. Language Projections • C++ • .NET • JavaScript
  • 30. Windows Tailored Profile • System.Collections • System.ComponentModel • System.Diagnostics • System.Dynamic • System.Globalization • System.IO • System.Linq • System.Net • System.Numerics • System.Reflection • System.Resources • System.Runtime • System.Security • System.ServiceModel • System.Text • System.Threading • System.Xml
  • 31. What’s missing in the Windows Tailored Profile • Enterprise Development – ASP.NET – Console – DirectoryServices – Windows Forms – WPF – WF • Dangerous, obsolete, legacy • Removed duplicates • Removed badly designed APIs
  • 32. .NET for Metro style apps .NET for Metro style apps .NET 4.5 Windows Phone 7 # of assemblies 15* 120 22 # of namespaces 60 400 88 # of types ~1K ~14K ~2K # of members ~10K ~110K ~14K * Refers to implementation assemblies, not reference assemblies.
  • 33. LEVERAGING TOMORROW WHAT WE KNOW TODAY C# for Metro style apps
  • 34. Windows has always provided compelling capabilities for developers to build upon Windows has not always made it straightforward for you to use these capabilities from C# or VB
  • 35. DllImport "avicap32.dll" "capCreateCaptureWindow" static extern int string int int int int int int int DllImport "avicap32.dll" static extern bool int MarshalAs UnmanagedType ref string int MarshalAs UnmanagedType ref string int // more and more of the same A small, easy sample of Win32 code 
  • 36. Traditional Windows API Your Managed Code Manually Generated Interop Code There’s a hole somewhere...
  • 37. On Windows 8, this will now be… using Windows.Media.Capture; var new CameraCaptureUI new Size var await CameraCaptureUIMode if var new BitmapImage await FileAccessMode
  • 38. Traditional Windows API Your Managed Code Windows Runtime The hole is gone 
  • 39. We already have the skills to build Metro style applications using C# (and VB as well)
  • 40. C# and Visual Basic influenced the Windows Runtime
  • 41. Windows Runtime is designed to be used from object-oriented languages like C# and Visual Basic
  • 42. Windows Runtime metadata files use an updated version of .NET’s metadata format
  • 43. DEMO Using ILDASM for Windows Metadata files
  • 44. Windows Runtime includes a XAML based framework for Metro style apps (we’ll see that in more detail further)
  • 45. Many of the Windows Runtime design guidelines came from the .NET design guidelines
  • 46. Windows Runtime was expressly designed to work well with C# and Visual Basic
  • 47. Using the Windows Runtime feels natural and familiar from C# and Visual Basic
  • 48. DEMO Using the Windows Runtime from C#
  • 49. Most WinRT types map directly to C#/VB var new CameraCaptureUI new Size var await CameraCaptureUIMode if var new BitmapImage await FileAccessMode
  • 50. Almost everything maps directly between the Windows Runtime and .NET • Primitives (strings, numbers, etc) • Interfaces • Enums • Structs • Delegates • Delegates • Constructors • Static Members • Properties • Events • Methods
  • 51. Most differences between Windows Runtime and .NET are hidden from the managed developer
  • 52. Exceptions from HRESULTs try var new CameraCaptureUI new catch Exception //Exception handling code ComException
  • 53. Accessing a WinRT Collection from C# var new FileOpenPicker var await foreach StorageFile in System.Collections.Generic.IReadOnlyList <Windows.Storage.StorageFile> Windows.Foundation.Collections.IVectorView <Windows.Storage.StorageFile>
  • 54. LEVERAGING TOMORROW WHAT WE KNOW TODAY XAML for Metro style apps
  • 55. Focusing now on… Windows Kernel Services JavaScript (Chakra) C/C++ C#, VB Metro style Apps Communication & Data Application Model Devices & Printing Windows Runtime APIs Graphics & Media XAML HTML / CSS HTML JavaScript C C++ C# VB Desktop Apps Win32 .NET SL Internet Explorer
  • 56. Moving from current XAML to WinRT • It’s all XAML – What you know, remains valid • You as a Silverlight/WPF/WP7 developer can now add Windows 8 developer to your business card! • If you know C++, you can now integrate that with XAML as well
  • 57. Concepts that carry forward • Same control model as we have today in Silverlight and WPF – Many controls can just be copied to WinRT – Same thing, but now native • Concepts: – Data binding, change notification – Styling – Animations – Visual State Manager – Already seen: C#, VB.NET and C++ • Some things may not be natively supported though • XAML is now exposed as a WinRT API – No wrappers!
  • 58. DEMO Silverlight app to Metro app
  • 59. What do you get as extra? • WinRT (duh) – APIs are aimed at building Metro style apps only • Metro style, look and feel • Touch is now fully supported, next to mouse input – Unified under “PointerXXX” • Metro style controls • New base namespace – Windows.UI.Xaml • Windows Store
  • 60. Input is now touch-driven • Things will still work with a mouse though
  • 61. DEMO Metro-style UI
  • 62. Running an application Tile -> Splash Screen -> App (App UI)
  • 63. Controls for Metro-style apps
  • 64. ListView and GridView are the new kids • Windows 8 “list controls” • Optimized for touch input • Support Windows 8 selection models • UI and Data Virtualization • Built in grouping
  • 65. DEMO Using a GridView
  • 66. And more new controls… • MediaPlayer • ToggleSwitch • ProgressRing • FlipView • JumpViewer – Semantic Zoom Control – Supports 2 Levels
  • 67. DEMO Using a FlipView
  • 68. The ApplicationBar, another new control • Used to place commands – “Inherited” from Windows Phone 7 • Persistent, light dismiss or time dismiss • Swipe in from top/bottom to display
  • 69. DEMO Using the ApplicationBar
  • 70. SOME MORE CONCEPTS
  • 71. Screen resolution and orientation • Screen resolution: – Current Resolution: • Window.Current.Bounds – Event: • Window.Current.SizeChanged • Orientation – Current (Namespace: Windows.Graphics.Display) • DisplayProperties.CurrentOrientation – Event: • DisplayProperties.OrientationChanged
  • 72. Detecting Layout • An application should support more than just the default view • Can detect when the view changes to react by showing another view – ApplicationLayout.GetForCurrentView().LayoutChanged
  • 73. DEMO Using Snapped View
  • 74. Integrating with Windows • An application can integrated with Windows and other applications through the “charms” – Search – Share – Devices – Settings – Picker • A charm is like a contract, a way of letting applications talk without knowing each other
  • 75. The “share” charm • A source app will share something • Target app will get the shared data • Between the two, some common formats are provided for data interchange • Should your app share? – Yes, most apps that create something should be sharing data • Should an app be a target? – If your app does things like publishing, storing or transforming data, then yes. – IM, translator, uploader...
  • 76. Specifying capabilities • Just like Windows Phone 7, an application needs to specify what it needs in the Application Manifest – Declare the intent towards system resources
  • 77. The lifetime of a Metro app • Only the foreground app is Active • All other background apps are Suspended – They get a notification about it • While suspended, apps may be Terminated – They won’t be notified about this
  • 78. Summary • A new world is opening up • As a developer now – We need to learn some new things – Most of our current knowledge is carried over – Our investments are safe (Silverlight, HTML, C++...)
  • 79. Q&A
  • 80. THANKS!
  • 81. Thinking about the future with Windows 8 SILVERLIGHTSHOW.NET WEBINARS SERIES GILL CLEEREN, 29th November 2011 www.snowball.be - gill.cleeren@ordina.be - @gillcleeren