SlideShare uma empresa Scribd logo
1 de 34
Conhecendo o Windows Runtime
WIN401
Quem é o palestrante?
Caio Garcez
Senior Technical Evangelist
@caio_garcez
Palestra
Desenvolvimento
para Windows 10
Desenvolvimento para Windows 10
Windows 10
operating system
Windows Bridges
Win32
desktop
Web
hosted
Java
Android
Obj.C
iOS
Universal Windows Platform
WWA
C++
& CX
.Net
languages
HTML/
JS
DirectX XAML
C++.Net
languages
MFC
WFWPF
.Net
runtime
.Net Core
Universal Windows Platform
One 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
XboxIoT
Universal
Windows Platform
Core APIs
Universal Windows Platform
Windows Device Family Extension SDKs
Para usar APIs específicas de
famílias de dispositivos adicione
referências aos Windows Device
Family Extension SDKs
Código Adaptativo
// StatusBar is Mobile only
if (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 Projeto
Target 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
MSIL
Código
nativo
Código
-Fonte
.NET Native
Código
nativo
.NET Native
Usado em todos os apps Windows 10
Conforme a performance do otimizador melhora, o .Net native melhora também
Conceitos da UWP
App Container
Sensores
Pastas
Rede
Outros
Demo
Projections
Component Object Model (COM)
Objeto
COM
Windows Runtime
Objeto
Windows
Runtime
Projections
Object
Windows Metadata
C++ App
Projection
CLR
C#/VB App
Projection
HTML App
Chakra
Projection
Criação de um objeto
Start
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ória
Uso 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 525
Memória disponível para apps e tasks 189 669 3123
App em foreground 185 390 900
Apps em backstack, background tasks 4 279 2223
Controle de CPU
Tipo de tarefa Limite de memória (MB)
Tempo de
vida
% CPU Bloqueado em Battery Save
Background 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
Prioridade de Tarefas (Tasks)
Tipo de tarefa Prioridade
App em foreground 2
VOIP 2
Áudio em background 2
VPN 2
Background Transfer 2 ou 6*
Bluetooth 3
Task CachedFileUpdater/ShareDataPackage 3 ou 6*
Task Completion 4
Task disparada por Geofencing 5
Background tasks de fault 6
App no backstack 7
Classe Windows.System.MemoryManager
MemoryManager.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 terminado
else if (usageLevel == BackgroundEnergyManager.ExcessiveUsageLevel)
;// Diminua o consume urgentemente
else 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 1431
Chácara Santo Antônio - SP
Para se inscrever: http://aka.ms/satyabr

Mais conteúdo relacionado

Semelhante a Win401 caio garcez_windows_runtime

Aula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gapAula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gapRoberson Alves
 
Overview do Windows Phone 7 Series
Overview do Windows Phone 7 SeriesOverview do Windows Phone 7 Series
Overview do Windows Phone 7 SeriesLuciano Condé
 
Desenvolvimento android braga_geek_nights (1)
Desenvolvimento android braga_geek_nights (1)Desenvolvimento android braga_geek_nights (1)
Desenvolvimento android braga_geek_nights (1)muldy
 
Computacao Movel e Sem Fio
Computacao Movel e Sem FioComputacao Movel e Sem Fio
Computacao Movel e Sem FioDouglas Frari
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeAlessandro Binhara
 
Visão Geral sobre a plataforma de aplicações do Windows Phone 7
Visão Geral sobre a plataforma de aplicações do Windows Phone 7Visão Geral sobre a plataforma de aplicações do Windows Phone 7
Visão Geral sobre a plataforma de aplicações do Windows Phone 7Luciano Condé
 
Conhecendo a Plataforma .NET
Conhecendo a Plataforma .NETConhecendo a Plataforma .NET
Conhecendo a Plataforma .NETPedro Alves Jr.
 
Windows Phone Development
Windows Phone DevelopmentWindows Phone Development
Windows Phone DevelopmentPedro Lamas
 
Construindo aplicações para o Windows Phone com Silverlight
Construindo aplicações para o Windows Phone com Silverlight  Construindo aplicações para o Windows Phone com Silverlight
Construindo aplicações para o Windows Phone com Silverlight Luciano Condé
 
Teradesk Mobile Expert Augusto Ferrarini
Teradesk  Mobile Expert Augusto FerrariniTeradesk  Mobile Expert Augusto Ferrarini
Teradesk Mobile Expert Augusto FerrariniMobile Expert
 
JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3
JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3
JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3Loiane Groner
 
Introdução ao android
Introdução ao androidIntrodução ao android
Introdução ao androidPaulo Remoli
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013javamanrj
 
Universal Windows Platform Bridges
Universal Windows Platform BridgesUniversal Windows Platform Bridges
Universal Windows Platform BridgesCaio Chaves Garcez
 

Semelhante a Win401 caio garcez_windows_runtime (20)

Aula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gapAula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gap
 
Overview do Windows Phone 7 Series
Overview do Windows Phone 7 SeriesOverview do Windows Phone 7 Series
Overview do Windows Phone 7 Series
 
Desenvolvimento android braga_geek_nights (1)
Desenvolvimento android braga_geek_nights (1)Desenvolvimento android braga_geek_nights (1)
Desenvolvimento android braga_geek_nights (1)
 
Computacao Movel e Sem Fio
Computacao Movel e Sem FioComputacao Movel e Sem Fio
Computacao Movel e Sem Fio
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente Mainframe
 
Workshop - Cordova e Ionic
Workshop - Cordova e IonicWorkshop - Cordova e Ionic
Workshop - Cordova e Ionic
 
Visão Geral sobre a plataforma de aplicações do Windows Phone 7
Visão Geral sobre a plataforma de aplicações do Windows Phone 7Visão Geral sobre a plataforma de aplicações do Windows Phone 7
Visão Geral sobre a plataforma de aplicações do Windows Phone 7
 
Conhecendo a Plataforma .NET
Conhecendo a Plataforma .NETConhecendo a Plataforma .NET
Conhecendo a Plataforma .NET
 
Firefox OS
Firefox OSFirefox OS
Firefox OS
 
Windows Phone Development
Windows Phone DevelopmentWindows Phone Development
Windows Phone Development
 
.NET Open Source 2009
.NET Open Source 2009.NET Open Source 2009
.NET Open Source 2009
 
Construindo aplicações para o Windows Phone com Silverlight
Construindo aplicações para o Windows Phone com Silverlight  Construindo aplicações para o Windows Phone com Silverlight
Construindo aplicações para o Windows Phone com Silverlight
 
Teradesk Mobile Expert Augusto Ferrarini
Teradesk  Mobile Expert Augusto FerrariniTeradesk  Mobile Expert Augusto Ferrarini
Teradesk Mobile Expert Augusto Ferrarini
 
JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3
JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3
JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3
 
Introdução ao android
Introdução ao androidIntrodução ao android
Introdução ao android
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
 
RAD Studio 10.2 Tokyo
RAD Studio 10.2 TokyoRAD Studio 10.2 Tokyo
RAD Studio 10.2 Tokyo
 
Netbeans Slides
Netbeans SlidesNetbeans Slides
Netbeans Slides
 
Universal Windows Platform Bridges
Universal Windows Platform BridgesUniversal Windows Platform Bridges
Universal Windows Platform Bridges
 
Qt Apresentação
Qt ApresentaçãoQt Apresentação
Qt Apresentação
 

Win401 caio garcez_windows_runtime

  • 1. Conhecendo o Windows Runtime WIN401
  • 2. Quem é o palestrante? Caio Garcez Senior Technical Evangelist @caio_garcez Palestra
  • 4. Desenvolvimento para Windows 10 Windows 10 operating system Windows Bridges Win32 desktop Web hosted Java Android Obj.C iOS Universal Windows Platform WWA C++ & CX .Net languages HTML/ JS DirectX XAML C++.Net languages MFC WFWPF .Net runtime .Net Core
  • 5. Universal Windows Platform One 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
  • 6. • Plataforma unificada de desenvolvimento • Único Application Package • Código adaptativo XboxIoT Universal Windows Platform Core APIs Universal Windows Platform
  • 7. Windows Device Family Extension SDKs Para usar APIs específicas de famílias de dispositivos adicione referências aos Windows Device Family Extension SDKs
  • 8. Código Adaptativo // StatusBar is Mobile only if (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)
  • 12. Propriedades do Projeto Target 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>
  • 13. 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
  • 17. .NET Native Usado em todos os apps Windows 10 Conforme a performance do otimizador melhora, o .Net native melhora também
  • 20. Demo
  • 22. Component Object Model (COM) Objeto COM
  • 24. Projections Object Windows Metadata C++ App Projection CLR C#/VB App Projection HTML App Chakra Projection
  • 25. Criação de um objeto Start 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
  • 26. Políticas de energia e memória do Windows 10
  • 27. Controle de memória Uso 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 525 Memória disponível para apps e tasks 189 669 3123 App em foreground 185 390 900 Apps em backstack, background tasks 4 279 2223
  • 28. Controle de CPU Tipo de tarefa Limite de memória (MB) Tempo de vida % CPU Bloqueado em Battery Save Background 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
  • 29. Prioridade de Tarefas (Tasks) Tipo de tarefa Prioridade App em foreground 2 VOIP 2 Áudio em background 2 VPN 2 Background Transfer 2 ou 6* Bluetooth 3 Task CachedFileUpdater/ShareDataPackage 3 ou 6* Task Completion 4 Task disparada por Geofencing 5 Background tasks de fault 6 App no backstack 7
  • 30. Classe Windows.System.MemoryManager MemoryManager.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;
  • 31. 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 terminado else if (usageLevel == BackgroundEnergyManager.ExcessiveUsageLevel) ;// Diminua o consume urgentemente else 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
  • 32. Q&A Visite o espaço Ask the Experts, próximo dos expositores
  • 33. Continue sua capacitação Microsoft Virtual Academy http://aka.ms/ch9 http://aka.ms/mva
  • 34. Evento de encerramento do Microsoft Insights Week com Satya Nadella, CEO da Microsoft. Dia 29 de setembro AMCHAM - Rua da Paz 1431 Chácara Santo Antônio - SP Para se inscrever: http://aka.ms/satyabr