Win401 caio garcez_windows_runtime

Post on 16-Apr-2017

346 views 1 download

transcript

Conhecendo o Windows Runtime

WIN401

Quem é o palestrante?Caio GarcezSenior Technical Evangelist@caio_garcez

Palestra

Desenvolvimento para Windows 10

Desenvolvimento para Windows 10

Windows 10operating system

Windows Bridges

Win32

desktop

Webhosted

JavaAndroid

Obj.CiOS

Universal Windows Platform

WWA

C++& CX

.Netlanguages

HTML/JS

DirectX XAML

C++.Netlanguages

MFCWFWPF

.Netruntime

.Net Core

Universal Windows PlatformOne Windows

Desktop

PC

2 in 1

Mobile

Tablet

Phablet

Phone

Xbox

Xbox

IoT

Band

IoT headless

Raspberry Pi

Home Automation

Surface Hub

Surface Hub

Holographic

HoloLens

• Plataforma unificada de desenvolvimento

• Único Application Package

• Código adaptativo

DesktopMobile

XboxIoT

Holographic Surface Hub

Universal Windows Platform

Core APIs

Universal Windows Platform

Windows Device Family Extension SDKsPara usar APIs específicas de famílias de dispositivos adicione referências aos Windows Device Family Extension SDKs

Código Adaptativo

// StatusBar is Mobile onlyif (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.UI.ViewManagement.StatusBar")) { var ignore = Windows.UI.ViewManagement.StatusBar.GetForCurrentView().HideAsync(); }

Use as APIs Windows.Foundation.Metadata.ApiInformation para escrever código adaptativo em versões diferentes do app para famílias diferentes de dispositivos (ou versões diferentes da UWP)

Demo

Versionamento da UWP

http://windows.Microsoft.com

Platform.XML

Propriedades do ProjetoTarget version (TargetPlatformVersion)

• Define a versão do Universal Windows SDK alvejada pelo projeto

• Define a superfície de API para o app

• É inserida como a propriedade TargetDeviceFamily.MaxVersionTested no manifesto como parte do processo de build

<Dependencies> <TargetDeviceFamily

Name="Windows.Universal" MinVersion="10.0.10240.0"

MaxVersionTested="10.0.10240.0" /></Dependencies>

Min version (TargetPlatformMinVersion)

• Define a versão minima da Universal Windows Platform suportada pelo projeto

• É inserida como a propriedade TargetDeviceFamily.MinVersion no manifesto como parte do processo de build

<Dependencies> <TargetDeviceFamily

Name="Windows.Universal" MinVersion="10.0.10240.0" MaxVersionTested="10.0.10240.0"

/></Dependencies>

Propriedades do Projeto

.NET Native

Código-Fonte

Compilação .NET Clássica

Pré-compilação MSIL JIT Código

nativo

Código-Fonte

.NET Native

VS 2015

Código nativo

.NET NativeCompilação de última geração na nuvem Usado em todos os apps Windows 10Apps usam o otimizador padrão do C++Conforme a performance do otimizador melhora, o .Net native melhora tambémTempo médio de startup 50% menorConsumo de memória 14% menor

Conceitos da UWP

App Container

Sensores

Pastas

Rede

Outros

Demo

Projections

Component Object Model (COM)

ObjetoCOM

IUnknown

AddRefQueryInterfaceRelease

IUnknown

Windows Runtime

Objeto Windows Runtime

IInspectable

:IUnknownGetIidsGetRuntimeClassNameGetTrustLevel

IInspectable

Projections

Object

IInspectable

Windows Metadata

C++ App

Projection

CLR

C#/VB App

ProjectionHTML AppChakra

Projection

Criação de um objetoStart

App pede criação do objeto

Passa o nome para RoActivateInstance

Encontra DLL usando Catalog Carrega DLL

Chama DllGet-ActivationFactory

Objeto criado pelo código de

implementação

IInspectable retornado

Projection cria wrapper (usando

metadata)

Objeto é ligado ao wrapper

Wrapper retornado para App

End

App

Projection

WinRT Object Manager

WinRT Object

Políticas de energia e memória do Windows 10

Controle de memóriaUso de memória (aproximado)

Smartphone 512 MB

Tablet 1 GB Desktop 2 GB

Memória Física (MB) 512 1024 2048

Memória Virtual (Paging) 200 200 1600

Memória Total 712 1224 3648

SO, drivers, serviços 425 425 425

Service Agents (OEM/MO) 22 40 0

VOIP, áudio em background 66 80 80

VPN 10 10 20

Total reservado 523 555 525Memória disponível para apps e

tasks 189 669 3123

App em foreground 185 390 900Apps em backstack, background

tasks 4 279 2223

94% dos appstêm pico <150 MB

92% dos appstêm média <100 MB

Controle de CPU

Tipo de tarefa Limite de memória (MB)

Tempo de vida % CPU Bloqueado em Battery

SaveBackground task default 16 30 seg 10 Sim

Bluetooth de longa duração 16 ∞ 10 Sim

Extended execution 150 10 min 10 Sim

Áudio em background 25 ∞ 10 Não

Chamada VOIP 66 ∞ 70 Não

App moderna em foreground 185 ∞ 70 Não

Exemplo: Dispositivo com 512 MB

Prioridade de Tarefas (Tasks)Tipo de tarefa Prioridade

App em foreground 2VOIP 2Áudio em background 2VPN 2Background Transfer 2 ou 6*Bluetooth 3Task CachedFileUpdater/ShareDataPackage 3 ou 6*

Task Completion 4Task disparada por Geofencing 5Background tasks de fault 6App no backstack 7

Exemplo:dispositivo com 512 MB

(*) Se vinculada à app em foreground

Classe Windows.System.MemoryManagerMemoryManager.AppMemoryUsageIncreased += OnAppMemoryUsageIncreased;MemoryManager.AppMemoryUsageDecreased += OnAppMemoryUsageDecreased;

ulong usageLimit = MemoryManager.AppMemoryUsageLimit;ulong usage = MemoryManager.AppMemoryUsage;ulong headroom = usageLimit - usage;

AppMemoryReport appReport = MemoryManager.GetAppMemoryReport();ulong privateCommit = appReport.PrivateCommitUsage;ulong peakPrivate = appReport.PeakPrivateCommitUsage;ulong totalCommit = appReport.TotalCommitUsage;ulong commitLimit = appReport.TotalCommitLimit;

ProcessMemoryReport processReport = MemoryManager.GetProcessMemoryReport();ulong privateSet = processReport.PrivateWorkingSetUsage;ulong totalSet = processReport.TotalWorkingSetUsage;

Classe Windows.System.Power.BackgroundEnergyManager

BackgroundEnergyManager.RecentEnergyUsageIncreased += OnRecentEnergyUsageIncreased;BackgroundEnergyManager.RecentEnergyUsageReturnedToLow += OnRecentEnergyUsageReturnedToLow;

uint usage = BackgroundEnergyManager.RecentEnergyUsage;

uint usageLevel = BackgroundEnergyManager.RecentEnergyUsageLevel;if (usageLevel == BackgroundEnergyManager.NearTerminationUsageLevel) ;// Prepare-se para ser terminadoelse if (usageLevel == BackgroundEnergyManager.ExcessiveUsageLevel) ;// Diminua o consume urgentementeelse if (usageLevel == BackgroundEnergyManager.MaxAcceptableUsageLevel) ;// Na “Wall of Shame”else if (usageLevel == BackgroundEnergyManager.NearMaxAcceptableUsageLevel) ;// Se aproximando da “Wall of Shame”else if (usageLevel == BackgroundEnergyManager.LowUsageLevel) ;// Bom cidadão

Q&A

Visite o espaço Ask the Experts, próximo dos expositores

Continue sua capacitação

Microsoft Virtual Academy

http://aka.ms/ch9 http://aka.ms/mva

Evento de encerramento do Microsoft Insights Week 

com Satya Nadella, CEO da Microsoft.Dia 29 de setembro

AMCHAM - Rua da Paz 1431Chácara Santo Antônio - SP

Para se inscrever: http://aka.ms/satyabr