Introducing Windows Runtime in Windows 8


Published on

More info on

Published in: Technology
1 Comment
  • Windws 8 Key product : ;))
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • varfpd = new Windows.Storage.Pickers.FileOpenPicker();fpd.fileTypeFilter.push(“.jpg”);fpd.fileTypeFilter.push(“.png”);fpd.pickSingleFileAsync().then(function (f) {img.src = window.URL.createObjectURL(f, false);});
  • Rich metadata – compare to windows.h; no relation between APIs
  • Private catalog – sharing between apps only through OS contracts
  • Thin projection layer for performance  HSTRING storyInterface-based system; also for versioning; don’t want to say it day-to-day, so we got runtime classes (may evolve) = collection of functionality (can grow) based on a set of interfacesAlso generic interfaces, e.g. for vectors (type-safety for collections)
  • Don’t have to see the interfaces for regular purposes
  • C++ @ compile time, native code talks directly to the OS, no metadata read at runtimeC#/VB – mixture of metadata at runtime and compile time; RCWs generated by CLRJS – using metadata at runtime (dynamic language)
  • App doesn’t have to know much – everything happens behind the scenes (projection, WinRT)
  • Interface tied back to version of WindowsNew version of a class may have more interfacesTools can surface only the interfaces that are available in targeted OS versions for the app
  • Responsive, fluid platform
  • Not straightforward; P/Invoke, COM interop; rocket science
  • Compare to JS (apart from web workers), single-threaded environmentWork is done in background thread and in async operations
  • E.g. webcam promptSame for pickersConfidence for the user
  • API set, but also coreInterface-basedProjectionsUnderpins whole Windows platformThis level of detail is not needed to use it (debugging, etc.)One Windows API for each thingNatural and familiar in your language
  • Introducing Windows Runtime in Windows 8

    1. 1. User Interface HTML5/CSS XAML DirectX Controls Data Binding SVG Tiles Input Accessibility Printing Devices Communications & DataGeolocation Portable Sensors NFC Contracts Local & Cloud Storage Web Notifications Streams Media Visual BackgroundPlayback Capture PlayTo XML Networking SMS Effects Transfer FundamentalsApplication Services Threading/Timers Memory Management Authentication Cryptography Globalization
    2. 2. Metro style Apps Desktop Apps View XAML HTML / CSSController JavaScript Model C/C++ C#, VB HTML C C# (Chakra) JavaScrip C++ VB t Windows Runtime APIs System Services Communication Graphics & Devices & & Data Media Printing Application Model Internet .NET Explorer Win32 SLKern Windows Kernel Services el
    3. 3. Metro style app Language Support (CLR, WinJS, CRT) Language Projection UI Pickers Controls Media Web Host (HTML, CSS, JavaScript)) Windows XAML Storage Network …Metadata &Namespace Windows Runtime Core Runtime Broker Windows Core
    4. 4. Demo
    5. 5. Metro style app Language Support (CLR, WinJS, CRT) Language Projection UI Pickers Controls Media Web Host (HTML, CSS, JavaScript)) Windows XAML Storage Network …Metadata &Namespace Windows Runtime Core Runtime Broker Windows Core
    6. 6. Strings HSTRING Avoids copying in multiple languagesBasic Types INT32, UINT64 * Pointers allowed in limited casesEnumerations enum AsyncStatus Flag or non-flag stylesStructures struct Rect; Can contain strings, but not interfacesSimple Arrays INT32 [] For very basic collectionsInterfaces IInspectable Methods are defined in interfacesGeneric Interfaces IVector<T> Type-generic interfaceRuntime Class Windows.Storage.StorageFile Binds interfaces to make a class
    7. 7. Demo
    8. 8. Metro style app Language Support (CLR, WinJS, CRT) Language Projection Language Projection UI Pickers Controls Media Web Host (HTML, CSS, JavaS Windows XAML Storage Network … cript))Metadata &Namespace Windows Runtime Core Runtime Broker Windows Core
    9. 9. IInspectable Shell32.dll IUnknown IStorageItemInformation IStorageItem FileInformation Object IStorageFile Interfaces Runtime ClassActivation Store (Registry) Windows Metadata (Disk)
    10. 10. IInspectable C++ App Projectio n IUnknown C#/VB App Projectio CLR n Object HTML App Projectio Chakra n Windows Metadata
    11. 11. Projection creates IInspectable Start wrapper (using returned metadata) App Object created by ProjectionApp asks to create Object bound to implementation object wrapper code WinRT Object Manager Pass Name to Call DllGet- Wrapper returnedRoActivateInstance ActivationFactory to App Find DLL using WinRT Object Load DLL End Catalog
    12. 12. IInspectable IInspectable IUnknown IUnknown Object Object Projectio Projectio Windows App Windows App n nMetadata v8 Metadata v9
    13. 13. Demo
    14. 14. Collections IVector<T>, IVectorView<T>, Iterators, Collections and events IMap<T> cross-languageDelegates delegate Encapsulate the context to call AsyncActionCompletedHandler back to an objectEvents IApplicationLayout::LayoutChanged Lists of callback recipientsPropertySet interface IPropertySet Collection of items with varying typesAsync Interface ReceivePropertiesOperation A way to get a delayed result without blockingContracts Windows.ApplicationModel. Connect Apps to Windows DataTransferManager Extension Points
    15. 15. C++ App STL-style Projection Array IEnumerabl C#/VB App CLR e (T) style Projection HTML App Chakra JavaScript ProjectionAssociativeCollection
    16. 16. var new CameraCaptureUI new Sizevar await CameraCaptureUIModeif var new BitmapImage await FileAccessMode
    17. 17. 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
    18. 18. Demo
    19. 19. AppMain UI Thread Threadpool Windows Windows Windows UI Object Object Object App Code App Code App Code
    20. 20. Projection App Proxy RuntimeBroker.exeIInspectable IUnknown WindowsRuntime Object