2-617: Introducing the Windows 10 App Model

Windows 10 dramatically expands the ways in which developers can build apps and games by adding several new programming models, and also expanding the app model to support a broader set of developer scenarios. Andrew will explore these in depth and give you the information you need to get started building Windows apps that leverage these features today.

1.0x

2-617: Introducing the Windows 10 App Model

Created 2 years ago

Duration 0:55:25
lesson view count 9976
Windows 10 dramatically expands the ways in which developers can build apps and games by adding several new programming models, and also expanding the app model to support a broader set of developer scenarios. Andrew will explore these in depth and give you the information you need to get started building Windows apps that leverage these features today.
Select the file type you wish to download
Slide Content
  1. Introducing the Universal Windows Platform App Model

    Slide 2 - Introducing the Universal Windows Platform App Model

    • Andrew Clinick
    • Group Program Manager
    • @andrewclinick
  2. Insert Session Code Here

    Slide 3 - Insert Session Code Here

    • Introducing the Universal Windows Platform App Model
    • Andrew Clinick
    • Group Program Manager
    • @andrewclinick
  3. Why do we need an app model?

    Slide 4 - Why do we need an app model?

    • What is the Windows App Model
    • Agenda
  4. Why do we need an app model?

    Slide 5 - Why do we need an app model?

  5. Windows has never had a definition of an app

    Slide 6 - Windows has never had a definition of an app

    • You know it when you see it but it’s never written down
    • Started with .exe but…
    • How do you install it?
    • How do you store state?
    • How long does the app run for?
    • What’s the versioning story?
    • How do you integrate with the OS?
    • How do you integrate with other apps?
    • What can your app do?
    • The UWP App Model provides answers to these questions
    • Why do we need an app model?
  6. Windows has never had a definition of an app

    Slide 7 - Windows has never had a definition of an app

    • You know it when you see it but it’s never written down
    • Started with .exe but…
    • How do you install it?
    • How do you store state?
    • How long does the app run for?
    • What’s the versioning story?
    • How do you integrate with the OS?
    • How do you integrate with other apps?
    • What can your app do?
    • The UWP App Model provides answers to these questions
    • Why do we need an app model?
  7. Defines the app lifecyle

    Slide 8 - Defines the app lifecyle

    • Unified across all Windows devices
    • Scales from IOTMobilePCXboxHololens
    • Cradle to Grave
    • Install
    • Runtime environment
    • Resource Management
    • Update
    • Data Model
    • Uninstall
    • What is the UWP Windows App Model
  8. Defines the app lifecyle

    Slide 9 - Defines the app lifecyle

    • Unified across all Windows devices
    • Scales from IOTMobilePCXboxHololens
    • Cradle to Grave
    • Install
    • Runtime environment
    • Resource Management
    • Update
    • Data Model
    • Uninstall
    • What is the UWP Windows App Model
  9. Inclusive of all apps that run on Windows

    Slide 10 - Inclusive of all apps that run on Windows

    • Universal Windows Apps
    • Existing apps
    • Phone Apps
    • Windows 8.1 Apps
    • Classic Windows Apps
    • UWP App Model
  10. Inclusive of all apps that run on Windows

    Slide 11 - Inclusive of all apps that run on Windows

    • Universal Windows Apps
    • Existing apps
    • Phone Apps
    • Windows 8.1 Apps
    • Classic Windows Apps
    • UWP App Model
  11. Project CentennialConverting Classic Windows apps to run on the Universal Windows Platform

    Slide 12 - Project CentennialConverting Classic Windows apps to run on the Universal Windows Platform

  12. Slide 13

    • What now?
  13. Until now there has been no definition of an app on Windows

    Slide 14 - Until now there has been no definition of an app on Windows

    • Lots of attempts but no systemic definition
    • Defining the app model for Classic Windows Apps
  14. Windows ROT

    Slide 15 - Windows ROT

    • The vast majority of the problem is registry growth/fragmentation
    • Uninstall is almost impossible to do 100%
    • MSI allows for custom actions and chaining MSI’s
    • Result: Your PC accretes more and more into the registry and file system over time hence ROT.
    • Why an app model *now* for Desktop?
  15. Windows ROT

    Slide 16 - Windows ROT

    • The vast majority of the problem is registry growth/fragmentation
    • Uninstall is almost impossible to do 100%
    • MSI allows for custom actions and chaining MSI’s
    • Result: Your PC accretes more and more into the registry and file system over time hence ROT.
    • Why an app model *now* for Desktop?
  16. AppX is the deployment model

    Slide 17 - AppX is the deployment model

    • Putting MSI on notice
    • Provides a better way to install/uninstall/update
    • Runtime isolates registry/disk access
    • Enforces App Model Policy
    • Integrate into the new app model
    • What does the app model mean?
  17. AppX is the deployment model

    Slide 18 - AppX is the deployment model

    • Putting MSI on notice
    • Provides a better way to install/uninstall/update
    • Runtime isolates registry/disk access
    • Enforces App Model Policy
    • Integrate into the new app model
    • What does the app model mean?
  18. Windows Desktop App Model Policy

    Slide 19 - Windows Desktop App Model Policy

    • Allowed
    • Full API access
    • Existing Desktop app lifecycle
    • Denied
    • System components
    • Drivers – user or kernel mode
    • NT Services
    • Admin elevation
    • InProc extensibility
    • E.g. Shell Extensions,
    • Can harm the integrity of the system
    • Security / stability issues
    • Can render the system unusable
  19. Windows Desktop App Model Policy

    Slide 20 - Windows Desktop App Model Policy

    • Allowed
    • Full API access
    • Existing Desktop app lifecycle
    • Denied
    • System components
    • Drivers – user or kernel mode
    • NT Services
    • Admin elevation
    • InProc extensibility
    • E.g. Shell Extensions,
    • Can harm the integrity of the system
    • Security / stability issues
    • Can render the system unusable
  20. AppX is the deployment model

    Slide 21 - AppX is the deployment model

    • Putting MSI on notice
    • Provides a better way to install/uninstall/update
    • Runtime isolates registry/disk access
    • Enforces App Model Policy
    • Integrate into the new app model
    • What does the app model mean?
  21. User promise:

    Slide 22 - User promise:

    • Never regret installing an app
    • Where do I get the app from?
    • Store is the default place to get apps
    • Flexible deployment
    • Based on the phone model
    • Token enrolled on device then any app signed with that token can be installed from anywhere
    • AppX improvements
    • Size – support >150Gb
    • Getting your app
  22. User promise:

    Slide 23 - User promise:

    • Never regret installing an app
    • Where do I get the app from?
    • Store is the default place to get apps
    • Flexible deployment
    • Based on the phone model
    • Token enrolled on device then any app signed with that token can be installed from anywhere
    • AppX improvements
    • Size – support >150Gb
    • Getting your app
  23. Developer Unlock

    Slide 24 - Developer Unlock

    • Cutting the cord!
    • Now just a setting on device
    • Registry key that can be controlled by enterprise
    • Limits
    • Phone: 20 apps
    • Desktop: Unlimited
  24. Developer Unlock

    Slide 25 - Developer Unlock

    • Cutting the cord!
    • Now just a setting on device
    • Registry key that can be controlled by enterprise
    • Limits
    • Phone: 20 apps
    • Desktop: Unlimited
  25. User can decide to install or move an app to Removable Storage

    Slide 26 - User can decide to install or move an app to Removable Storage

    • App is encrypted on the Removable Storage card for protection and isolation
    • Apps are enabled for Removable Storage by default
    • Opt out with a flag in the manifest
    • Install apps on to Removable Storage
  26. User can decide to install or move an app to Removable Storage

    Slide 27 - User can decide to install or move an app to Removable Storage

    • App is encrypted on the Removable Storage card for protection and isolation
    • Apps are enabled for Removable Storage by default
    • Opt out with a flag in the manifest
    • Install apps on to Removable Storage
  27. Resource Management

    Slide 28 - Resource Management

    • Scaling from low end phones to high end PCs
    • Extended Execution for foreground applications
    • Task completion scenarios
    • let me finish saving my file
    • Turn by turn navigation
    • Ask for more time
    • The amount of time is based on what device you’re running on
    • Always keep my app running
    • Tell the OS when you start that you intend to keep running
    • Triggers
    • Multitasking
  28. Resource Management

    Slide 29 - Resource Management

    • Scaling from low end phones to high end PCs
    • Extended Execution for foreground applications
    • Task completion scenarios
    • let me finish saving my file
    • Turn by turn navigation
    • Ask for more time
    • The amount of time is based on what device you’re running on
    • Always keep my app running
    • Tell the OS when you start that you intend to keep running
    • Triggers
    • Multitasking
  29. All UWP apps will resume be default

    Slide 30 - All UWP apps will resume be default

    • All 8.1 Phone apps and 8.0/8.1 Desktop apps also resume
    • Windows Phone 7.x and 8.0 apps do *not*
    • Why?
    • App Compatibility
    • App Resume policy
  30. Slide 31

    • On desktop, Back button in the app chrome becomes disabled when it dead ends at the root of the app.
    • Same app on Mobile and Desktop
    • BACK BEHAVIOR: EXAMPLE
  31. Slide 32

    • On desktop, Back button in the app chrome becomes disabled when it dead ends at the root of the app.
    • Same app on Mobile and Desktop
    • BACK BEHAVIOR: EXAMPLE
  32. Apps have traditionally on mobile devices been isolated

    Slide 33 - Apps have traditionally on mobile devices been isolated

    • Isolation is good but…
    • Users want to get things done
    • What did the web teach us?
    • URL based activation/app model allows for apps to integrate easily
    • Keep it simple
    • Build it and let the ecosystem flourish
    • What did COM teach us?
    • Build it and let the ecosystem flourish
    • Complexity kills
    • App Integration
  33. Apps have traditionally on mobile devices been isolated

    Slide 34 - Apps have traditionally on mobile devices been isolated

    • Isolation is good but…
    • Users want to get things done
    • What did the web teach us?
    • URL based activation/app model allows for apps to integrate easily
    • Keep it simple
    • Build it and let the ecosystem flourish
    • What did COM teach us?
    • Build it and let the ecosystem flourish
    • Complexity kills
    • App Integration
  34. Building a web of apps

    Slide 35 - Building a web of apps

  35. Allow apps to integrate using the best of the web

    Slide 36 - Allow apps to integrate using the best of the web

    • URL based activation/communication
    • Foreground to Foreground
    • Very similar to the web model
    • Allows for custom scheme invocation skype:andrewclinick
    • New in 10 - the ability to return results, query for apps and enumerate apps
    • Foreground to Background
    • Application services
    • Enables you to “publish” a background task that can be called by other apps
    • Facebook & Twitter integration with the People app is a key example of this
    • Building a Web of Apps
  36. Allow apps to integrate using the best of the web

    Slide 37 - Allow apps to integrate using the best of the web

    • URL based activation/communication
    • Foreground to Foreground
    • Very similar to the web model
    • Allows for custom scheme invocation skype:andrewclinick
    • New in 10 - the ability to return results, query for apps and enumerate apps
    • Foreground to Background
    • Application services
    • Enables you to “publish” a background task that can be called by other apps
    • Facebook & Twitter integration with the People app is a key example of this
    • Building a Web of Apps
  37. Using our own technology was a key feature for 10

    Slide 38 - Using our own technology was a key feature for 10

    • Cortana and People app use app services extensively
    • People
    • Social Network Extensibility
    • Cortana
    • Voice Commands on Cortana’s canvas
    • Office & Skype
    • Skype: & Lync: for meeting requests
    • Interactive Toasts
    • Photos
    • Photo Editors
    • Camera
    • Lens
    • App 2 App/App Services and 1st party apps
  38. Example:  Viber integration with Cortana

    Slide 39 - Example: Viber integration with Cortana

    • Define the app services in the appmanifest
    • Register the Voice Command Definition file with Cortana
    • See session *** for more details
    • In package.appxManifest
    • <Extensions>
    •    <uap:Extension Category="windows.appService" EntryPoint="ViberServices.ViberVoiceCommandService">
    •       <uap:AppService Name="ViberVoiceServiceEndpoint" />
    •     </uap:Extension>
    • </Extensions>
    • In viber.vcd
    • <Command Name="SendMessage">
    •       <Example> Tell Mark to buy ink and paper </Example>
    •       <ListenFor RequireAppName="BeforeOrAfterPhrase"> Tell {contact} [to] {message} </ListenFor>
    •       <VoiceCommandService Target="ViberVoiceServiceEndpoint"/>
    • </Command>
  39. Example:  Viber integration with Cortana

    Slide 40 - Example: Viber integration with Cortana

    • Define the app services in the appmanifest
    • Register the Voice Command Definition file with Cortana
    • See session *** for more details
    • In package.appxManifest
    • <Extensions>
    •    <uap:Extension Category="windows.appService" EntryPoint="ViberServices.ViberVoiceCommandService">
    •       <uap:AppService Name="ViberVoiceServiceEndpoint" />
    •     </uap:Extension>
    • </Extensions>
    • In viber.vcd
    • <Command Name="SendMessage">
    •       <Example> Tell Mark to buy ink and paper </Example>
    •       <ListenFor RequireAppName="BeforeOrAfterPhrase"> Tell {contact} [to] {message} </ListenFor>
    •       <VoiceCommandService Target="ViberVoiceServiceEndpoint"/>
    • </Command>
  40. Engaging with your users

    Slide 41 - Engaging with your users

  41. Engaging with your users

    Slide 42 - Engaging with your users

  42. Content adapts with the tileThe new adaptive tile template works similarly to universal app patterns by allowing your content to adapt depending on the devices screen density. As you design your tiles it is important to keep in mind how you want your content to adapt to the tiles size on screens of different densities.

    Slide 43 - Content adapts with the tileThe new adaptive tile template works similarly to universal app patterns by allowing your content to adapt depending on the devices screen density. As you design your tiles it is important to keep in mind how you want your content to adapt to the tiles size on screens of different densities.

    • <tile>
    • <visual>
    • <binding template="TileMedium">
    • <group>
    • <subgroup>
    • <text hint-style="subtitle">John Doe</text>
    • <text hint-style="subtle">Photos from our trip</text>
    • <text hint-style="subtle">Thought you might like to see all of</text>
    • </subgroup>
    • </group>
    • <group>
    • <subgroup>
    • <text hint-style="subtitle">Jane Doe</text>
    • <text hint-style="subtle">Questions about your blog</text>
    • <text hint-style="subtle">Have you ever considered writing a</text>
    • </subgroup>
    • </group>
    • </binding>
    • </visual>
    • </tile>
    • Min. Med Size
    • Max Med. Size
    • XML SAMPLE 1
    • Adaptive Tile Template
  43. Engaging with your users

    Slide 44 - Engaging with your users

  44. Allow apps to integrate using the best of the web

    Slide 45 - Allow apps to integrate using the best of the web

    • URL based activation/communication
    • Foreground to Foreground
    • Very similar to the web model
    • Allows for custom scheme invocation skype:andrewclinick
    • New in 10 - the ability to return results, query for apps and enumerate apps
    • Foreground to Background
    • Application services
    • Enables you to “publish” a background task that can be called by other apps
    • Facebook & Twitter integration with the People app is a key example of this
    • Building a Web of Apps
  45. Allow apps to integrate using the best of the web

    Slide 46 - Allow apps to integrate using the best of the web

    • URL based activation/communication
    • Foreground to Foreground
    • Very similar to the web model
    • Allows for custom scheme invocation skype:andrewclinick
    • New in 10 - the ability to return results, query for apps and enumerate apps
    • Foreground to Background
    • Application services
    • Enables you to “publish” a background task that can be called by other apps
    • Facebook & Twitter integration with the People app is a key example of this
    • Building a Web of Apps
  46. Allow apps to integrate using the best of the web

    Slide 47 - Allow apps to integrate using the best of the web

    • URL based activation/communication
    • Foreground to Foreground
    • Very similar to the web model
    • Allows for custom scheme invocation skype:andrewclinick
    • New in 10 - the ability to return results, query for apps and enumerate apps
    • Foreground to Background
    • Application services
    • Enables you to “publish” a background task that can be called by other apps
    • Facebook & Twitter integration with the People app is a key example of this
    • Building a Web of Apps
  47. Allow apps to integrate using the best of the web

    Slide 48 - Allow apps to integrate using the best of the web

    • URL based activation/communication
    • Foreground to Foreground
    • Very similar to the web model
    • Allows for custom scheme invocation skype:andrewclinick
    • New in 10 - the ability to return results, query for apps and enumerate apps
    • Foreground to Background
    • Application services
    • Enables you to “publish” a background task that can be called by other apps
    • Facebook & Twitter integration with the People app is a key example of this
    • Building a Web of Apps
  48. Allow apps to integrate using the best of the web

    Slide 49 - Allow apps to integrate using the best of the web

    • URL based activation/communication
    • Foreground to Foreground
    • Very similar to the web model
    • Allows for custom scheme invocation skype:andrewclinick
    • New in 10 - the ability to return results, query for apps and enumerate apps
    • Foreground to Background
    • Application services
    • Enables you to “publish” a background task that can be called by other apps
    • Facebook & Twitter integration with the People app is a key example of this
    • Building a Web of Apps
  49. Allow apps to integrate using the best of the web

    Slide 50 - Allow apps to integrate using the best of the web

    • URL based activation/communication
    • Foreground to Foreground
    • Very similar to the web model
    • Allows for custom scheme invocation skype:andrewclinick
    • New in 10 - the ability to return results, query for apps and enumerate apps
    • Foreground to Background
    • Application services
    • Enables you to “publish” a background task that can be called by other apps
    • Facebook & Twitter integration with the People app is a key example of this
    • Building a Web of Apps