Windows 10 Developer
Readiness - Brasil
- Powered by MVPs
Alexandre Chohfi – chohfi@outlook.com
Rodolfo Fadino - rodolfo.fadino@gmail.com
http://windows.Microsoft.com
Agenda
Uma única plataforma
Um Windows | Múltiplos dispositivos
Experiência do desenvolvedor
Ferramentas | .Net Native
Uma loja + Estratégias de Monetização
Propaganda | Compras
XAML
A plataforma de UI com XAML (Fundamental + Avançado)
Template 10
Template da comunidade para desenvolvedores Windows 10
Introduzindo o
UWP
http://windows.Microsoft.com
Windows Core
Um Core comum refatorado
Uma plataforma de hardware
Formato unico de acesso ao hardware
Rede e I/O padronizadas
Phone
Dispositivo
Xbox
Dispositivo
Desktop
Dispositivo
Windows Core
Desktop
SKU
Phone
SKU
Xbox
SKU
http://windows.Microsoft.com
One Windows
Desktop
SKU
PC
2 in 1
Mobile
SKU
Tablet
Phablet
Phone
Xbox
SKU
Xbox
IoT
SKU
Band
IoT headless
SKU
Raspberry Pi
Home
Automation
Surface Hub
SKU
Surface Hub
Holographic
SKU
HoloLens
Cada família adiciona
funcionalidades em cima do qual
ele herda
http://windows.Microsoft.com
Fácil de usuários
adotarem & se
manterem atualizados
Core unificado e
plataforma de apps
A jornada de convergência
Windows 10
Kernel do SO
Convergido
Modelo de desenvolvimento
convergido
http://windows.Microsoft.com
Phone Tablet Pequeno
2-em-1s
(Tablet ou Laptop)
Desktops
& All-in-OnesPhablet Tablet Grande
Laptop
Clássico
Xbox IoTSurface Hub Holografico
Windows 10
http://windows.Microsoft.com
Uma loja +
Um Dev Center
Reuso de
código
existenteUma SDK +
Ferramenta
Interface de
Usuário
adaptativa
Inputs de
Usuário
naturais
Uma Plataforma Universal do Windows
(One Universal Windows Platform)
http://windows.Microsoft.com
Universal Windows Platform
Um único conjunto de APIs
Um conjunto garantido de APIs
O mesmo em todos os dispositivos
Phone
Dispositivo
Xbox
Dispositivo
Desktop
Dispositivo
Windows Core
Universal Windows Platform
Aplicativos não têm como alvo o
Windows 10, aplicativos tem como
alvo a plataforma
http://windows.Microsoft.com
<TargetPlatform
Name="Microsoft.Universal"
minVersion="10.0.10069.0"
maxVersionTested="10.0.10190.0"/>
A plataforma(UWP) pode
atualizar-se em seu próprio ritmo
http://windows.Microsoft.com
Windows app
Um único binário(pacote)
Rodando em qualquer dispositivo
Testando por capacidades(capabilities)
Ajustando para dispositivos
Phone
Dispositivo
Xbox
Dispositivo
Desktop
Dispositivo
Windows Core
Universal Windows Platform
Windows App
http://windows.Microsoft.com
A história do desenvolvedor
Quando desenvolve para iOS,
O desenvolvedor escreve para iPad & iPhone
Quando desenvolve para Android,
O desenvolvedor escreve para todos os dispositivos suportados
Quando desenvolve para Windows 8,
O desenvolvedor escreve para cada um dos dispositivos
Quando desenvolve para Windows 10,
O desenvolvedor escreve para todos os dispositivos
http://windows.Microsoft.com
Extensões da plataforma
API específica para dispositivos
Capacidades específicas da família
Compatível entre dispositivos
Cadência única de atualização
Phone
Dispositivo
Xbox
Dispositivo
Desktop
Dispositivo
Windows Core
Universal Windows Platform
Windows App
Phone
extensão
Xbox
extensão
Desktop
extensão
Extensões não invalidam
os binários em outras plataformas
http://windows.Microsoft.com
Universal Windows Platform
Um Sistema Operacional
Um Core do Windows para todos os dispositivos
Uma Plataforma de Apps
Apps rodam dentro de sua família
Um Dev Center
Um único fluxo de submissão e um dashboard
Uma Loja
Alcance global, monetização local
Consumidores, Empresas & Academia
XAML/.Net não é a única maneira
de se criar Windows Apps
http://windows.Microsoft.com
Windows 10
sistema operacional
Tecnologias de pontes(Bridges)
Win32
desktop
Web
hospedado
Java
Android
Obj.C
iOS
Universal Windows Platform
WWAC++
& CX
.Net
linguagens
HTML
DirectX
XAML
C++
.Net
linguagens
MFCWFWPF
.Net
runtime
http://windows.Microsoft.com
Tecnologias de pontes (Bridges)
Objective-C
No Build foi anunciado que código iOS pode ser reutilizado em Apps Windows
Android
No Build foi anunciado que código Android pode ser reutilizado em um App Windows para rodar no Windows Phone
Web
No Build foi anunciado que web sites podem ser empacotados para rodar no Windows
Win32
No Build foi anunciado que Classic Windows Apps (CWA) podem ser empacotados como um Appx
Pontes trazem mais aplicativos
para a plataforma Windows
http://windows.Microsoft.com
Design Adaptativo
Design responsivo
Design flexivel que responde a pequenas mudanças
Muitos controles gerenciam responsividade básica
Design adaptativo
Layouts inteligentes que se ajustam em grandes mudanças
Funcionalidades como visual states ajudam nesta solução
Design sob medida/específico (Tailored)
App específico para um dispositivo pode simplificar o design
Alguns dispositivos podem ter uma linguagem de design única
http://windows.Microsoft.com
Design adaptativo
Phone (retrato)
Tablet (paisagem) / Desktop
http://windows.Microsoft.com
Design sob medida
Phone (retrato)
Tablet (paisagem) / Desktop
http://windows.Microsoft.com
Continuum for Convertibles and PhonesContinuum para
conversíveis(2in1
e Celulares
http://windows.Microsoft.com
Código adaptativo
Um binário compatível entre devices
API universal com implementações específicas por dispositivo
Ilumine seu App com funcionalidades
Testando por namespaces e funcionalidades
Usuários amam Apps que funcionam
bem em todos seus devices
http://windows.Microsoft.com
Teste por recursos em runtime
Utilize código adaptativo para iluminar seu App em
dispositivos específicos
var api = "Windows.Phone.UI.Input.HardwareButtons";
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(api))
{
Windows.Phone.UI.Input.HardwareButtons.CameraPressed
+= CameraButtonPressed;
}
http://windows.Microsoft.com
UAP
Windows Core Windows Core Windows Core Windows Core
UAP UAP UAP
Desktop Mobile Xbox Outros…
As famílias de dispositivos que você
escolher determinam quais APIs
você poderá chamar livremente
DEMO
Código adaptativo
Um simples, unificado e integrado
ambiente de desenvolvimento
http://windows.Microsoft.com
Visual Studio IDE
Todos os tipos de projeto
Desktop, Windows, Phone, Serviços, Web, Games, Outros…
Todas as tarefas de um desenvolvedor
Edição de código, design de arquitetura, design de UX, Debug, Profiling, Review, Testes,
Muito Mais…
Todas as linguagens
C++/CX, C#, Visual Basic, JavaScript, XAML, HTML, Outras…
Visual Studio Online
Repositório de código, gerenciamento de projeto, track de bugs, muito mais…
Apresentando o Roslyn,
o novo compilador para o .Net
http://windows.Microsoft.com
Blend for Visual Studio
A IDE do desenvolvedor XAML
Sempre parte do Visual Studio
Utiliza o shell do Visual Studio
Auto-completar & intellisense completos
• Validação
• Snippets
• Peek
Gerenciamento de arquivos & solução
Gerenciamento de Recursos
Gerenciamento de Dados
Animações
Estados (States)
http://windows.Microsoft.com
Edições do Visual Studio 2015
Enterprise
Modelagem de arquitetura, Diagnosticos, VSO/ALM & Release Management
Professional
Validação de Arquitetura, VSO/ALM & Feedback Management
Edição Community
Visual Studio Professional Edition
http://windows.Microsoft.com
Microsoft Developer Network
Documentação Microsoft
http://msdn.Microsoft.com
http://dev.Windows.com
Treinamentos Microsoft
http://msevents.Microsoft.com
http://MicrosoftVirtualAcademy.com
MSDN Subscription
Sistemas Operacionais
Produtos Server/Client
Ferramentas de Desenvolvimento
Créditos no Azure/O365
http://windows.Microsoft.com
Developer unlock
http://windows.Microsoft.com
Onde eu posso desenvolver?
Windows 10
Necessita do Visual Studio 2015
Melhor cenário
Windows 8.1 & Windows Server 2012 R2
O designer do Visual Studio não funciona
Debug necessita um dispositivo com Windows 10, emuladores ou as Ferramentas de
Debug Remoto (Remote Debugging Tools)
Windows 7
O designer do Visual Studio não funciona
Debug necessita um dispositivo com Windows 10 ou as Ferramentas de Debug Remoto
(Remote Debugging Tools)
Linguagens gerenciadas estão mais
eficientes do que nunca
http://windows.Microsoft.com
.NET Native
Próxima geração de compiladores na núvem
Todos Apps Windows
Apps usam o otimizador padrão do C++
A medida que o otimizador melhora, o mesmo se reflete no .Net native
Apps com o bootstrapper .Net
Inclúi garbage collection
Não existe runtime
É código de maquina
Todo App Windows será é
compilado com o .Net Native
http://windows.Microsoft.com
Beneficios reais com o .Net Native
50% mais rápido na inicialização
14% a menos no consumo médio de memória
.Net Native habilita a plataforma a
atualizar-se muito mais rápido
pois não tem dependências nos
pacotes
http://windows.Microsoft.com
345
609
663
277
510 511
0
100
200
300
400
500
600
700
Hello World (M) Dialer (M) Calc (PC)
Tempoemms
8.1 10
7.5
12.6
18.4
4.2
7
12.5
0
2
4
6
8
10
12
14
16
18
20
Hello World (M) Dialer (M) Calc (PC)
DinâmicaemMB
8.1 10
InicializaçãoMemória
Beneficios da plataforma universal
Windows 10 renderiza
texto 50% mais rápido
Perguntas?
Loja do Windows
(Store)
http://windows.Microsoft.com
Apps
Inclusive Win32
Música
Jogos
Xbox
Vídeo
Uma Loja, um catálogo
http://windows.Microsoft.com
Venda seu app
Uma submissão do App para todas as famílias de
dispositivos
Um conjunto de metadados de merchandise
(em breve) Preços de assinaturas(Subscriptions)
(em breve) A loja também estará na web
(em breve) Veiculação de Aplicativos
Campanhas de advertising com balanceamento
Códigos promocionais
Propagandas de instalação de Apps
In-House ads
Suas propagandas internas para
promover seus outros Apps
http://windows.Microsoft.com
Empacotamento da Windows Store
Funcionalidade WP XAP 8.1 WP AppX 8.1 AppX 8.1 AppX 10.x
Plataforma WP 8.1+ WP 8.1 Win 8.1 Win 10
Download específico para a build
do OS do Device
Encriptação (ainda não)
App Bundles
Assinatura do pacote Debug
Download/Update diferencial (dif)
File Single Instancing
Instalação no Volume Externo (SD) (Win 10)
Storage compartilhado do
publisher
http://windows.Microsoft.com
Distribuição na Windows Store
Windows Phone 7.x, 8.x Windows 8.x Windows 10
Apps ocultos(Hidden)
Preços por mercados
Publicação independente de IAP
Betas
Trial baseado em tempo
Descontos
Publicação agendada
E Enterprises?
http://windows.Microsoft.com
Participando na Business Store
Apps publicados na loja pública
são listados automaticamente na Business Store
Enpresas podem comprar apps em lotes
Licenciamento offline do seu App é opcional
Suporta cenários onde dispositivos estão disconectados da internet
Publique Apps de forma privada em lojas
Portal de empresas permite associas contas de desenvolvedor, e depois ainda pode
selecionar apps específicos para serem publicados apenas para aquela empresa, ignorando
a loja pública
Microsoft
advertising
http://windows.Microsoft.com
Monetize seu app
Compras no/do Aplicativo
Trial baseado em tempo ou em limitação de funcionalidade
In-App purchase
Advertising
Interstitial video
Broker de Advertising
In-app purchase
Consumiveis & Duraveis
(em breve) Assinaturas
http://windows.Microsoft.com
Anuncie seu app
Promova seu app
Segmentação manual ou automática por idade, gênero ou localização
Acompanhe e analise instalações de apps & campanhas
Faça promoção cruzada de seus apps de graça
Em breve
Recursos de segmentação adicionais
Apoio de análises de terceiros
Aumento do orçamento de campanhas
http://windows.Microsoft.com
Loja afiliadas
Monetize em sites (blogs)
Ganhe uma comissão de 7% sobre aplicativos, jogos, músicas, filmes e vídeos
Faça vendas de bens físicos & digitais
Pagamentos simplificados e mais rápidos
A atividade de pagamento da loja é
centralizada e com limites + baixos
http://windows.Microsoft.com
Microsoft advertising SDK
Nova mediação de ads maximiza a
taxa de preenchimento (fill rate)
http://windows.Microsoft.com
Video interstitials
Beneficios
Integra-se naturalmente
Advertising baseado em recompensa
Disponibilidade
Windows 10 universal
Windows/Phone 8.1 (em breve)
http://windows.Microsoft.com
Considerações
Melhores práticas
Considere utilizar ads desde a fase conceitual do seu projeto
Mostre ads em vídeos durante pausas naturais
Associe ads com vantagens reais
Piores práticas
Mostrar ads ao abrir o app
Interromper o fluxo normal do usuário
Muitos e muitos anúncios
Compras dentro do app (in-app)
podem ser duráveis ou consumiveis
http://windows.Microsoft.com
In-app purchases
#if DEBUG
var license = CurrentAppSimulator.LicenseInformation;
if (license.ProductLicenses["AdFree"].IsActive)
{
// already owns
this.ShowAds = false;
}
else
{
var result = await CurrentAppSimulator.RequestProductPurchaseAsync("AdFree");
switch (result.Status)
{
case ProductPurchaseStatus.Succeeded:
case ProductPurchaseStatus.AlreadyPurchased:
this.ShowAds = false;
break;
default:
this.ShowAds = true;
break;
}
A loja do Windows dispoem de
várias formas de monetizar seu app
Perguntas?
A história
do XAML
http://windows.Microsoft.com
A plataforma de UI XAML
Windows está sendo padronizado
Novas experiências como o menu iniciar e o explorer usam a plataforma de UI XAML
O sistema operacional tem necessidades absurdas de performance
Office está sendo padronizado
A suite universal de apps do Office usam a plataforma de UI XAML
O Office tem necessidades absurdas de usabilidade e funcionalidades
First-party esta sendo padronizado
Os novos e já existentes apps do MSN para Windows usam a plataforma de UI XAML
Apps first-party apps empurram os limites da disponibilidade e capacidade da API
A plataforma de UI XAML é
parte da fundação do Windows
http://windows.Microsoft.com
WPF
É uma parte essencial do Windows
O .NET Framework é um componente do SO
WPF é um componente do .NET Framework
A próxima versão do WPF
A roadmap do WPF para o .NET 4.6 é pública
Novas ferramentas para o WPF incluem a Live Tree/Debug
Acesso a APIs modernas
Novas APIs do WinRT estão disponíveis para os apps desktop
Novas funcionalidades do shell (como o Toast) também estão disponíveis
O XAML do Windows vai continuar
a inovar dentro do Windows
http://windows.Microsoft.com
Blend, a IDE do desenvolvedor XAML
Casca do Visual Studio
Intellisense de XAML
XAML Peek
Configurações sincronizadas
Abertura rápida
Blend Clássico
Resources
Data
Storyboards
States
Behaviors
Controles na
toolbox XAML
http://windows.Microsoft.com
Considerações de Design
Mantenha seu design flúido
Design responsivo
Considere telas pequenas
Design adaptativo
Mudanças maiores na tela
Design específico (Tailored)
Layouts específicos por devices
DEMO
Design Adaptativo
http://windows.Microsoft.com
Controles de Layout
<Border Thickness="" Brush="" />
<Canvas />
<Grid />
<RelativePanel />
<ScrollViewer />
<SplitView DisplayMode="" />
<StackPanel Orientation="" />
<VariableSizedWrapGrid />
<ViewBox Stretch="" />
http://windows.Microsoft.com
Canvas
http://windows.Microsoft.com
StackPanel
http://windows.Microsoft.com
Grid
http://windows.Microsoft.com
WrapGrid
http://windows.Microsoft.com
ScrollViewer
http://windows.Microsoft.com
Viewbox
http://windows.Microsoft.com
RelativePanel (*novo)
Alguns elementos filhos
agem como âncoras
Maioria dos elementos
filhos são relacionados
Técnica de layout que
funciona bem com States
http://windows.Microsoft.com
SplitView
IsPaneOpen="True" IsPaneOpen="False"
DisplayMode=
"Inline"
DisplayMode=
"Overlay"
DisplayMode=
"CompactInline"
DisplayMode=
"CompactOverlay"
http://windows.Microsoft.com
Buttons
<Button Content="" />
<HyperlinkButton />
<RepeatButton />
<ToggleButton IsChecked="" />
http://windows.Microsoft.com
Controles de Texto
<TextBox Text="" />
<PasswordBox Text="" />
<TextBlock Text="" />
<RichEditBox Content="" />
<RichTextBlock Content="" />
<BitmapIcon UriSource="" />
<FontIcon Glyph="" />
<SymbolIcon Icon="" />
<PathIcon Data="" />
http://windows.Microsoft.com
Controles de seleção e pickers
<CalendarView />
<DatePicker Date="" />
<TimePicker Time="" />
<ToggleSwitch IsChecked="" />
<CheckBox IsCHecked="" />
<RadioButton IsChecked="" />
<ComboBox />
<ListBox />
<Slider Minimum="" Maximum="" />
http://windows.Microsoft.com
Controles de coleção/dados
<ItemsControl ItemsSource="" />
<FlipView />
<GridView />
<ListView />
<SematicZoom />
<Hub Orientation="" />
<ContentControl ControlTemplate="" />
<DataTemplate />
<ItemsPanelTemplate />
<ControlTemplate />
<ContentPresenter />
<ItemsPresenter />
<ContentControl />
http://windows.Microsoft.com
Sintaxe do Grid View
GridViews podem ser reordenadas
http://windows.Microsoft.com
Sintaxe do List View
http://windows.Microsoft.com
Sintaxe do Flip View
http://windows.Microsoft.com
Sintaxe do Hub
http://windows.Microsoft.com
App bars e commands
<AppBar />
<CommandBar />
<AppBarButton Label="" Icon="" />
<AppBarToggleButton IsChecked="" />
<AppBarSeparator />
http://windows.Microsoft.com
Controles de Flyout
<Popup IsOpen="" />
<ContentDialog Title="" Content="" />
<Flyout Placement="" />
<MenuFlyout />
<ToolTip />
http://windows.Microsoft.com
Controles de progresso, Media & Inking
<ProgressBar IsIntermediate="" />
<ProgressRing IsActive="" />
<Image />
<InkCanvas />
<MediaElement />
<CaptureElement />
http://windows.Microsoft.com
O que é um Resource XAML?
Resources de sistema
ThemeResources
Resources customizados
Valores (por exemplo font size)
Objetos (por exemplo color brushes)
Estilos de controles
BasedOn
Templates
Templates de Controles
Data templates
http://windows.Microsoft.com
Janela de Resource
DEMO
XAML
Desktop e Phone
Perguntas?
http://windows.Microsoft.com
Introduzindo o “Template 10”
Um novo template “vazio”
Inclui alguns arquivos e pastas vazias para indicar o caminho da convenção
Similar ao template do MVC
Componentes adicionais para resolver problemas comuns
Resolvendo para os 90%
O código vai resolver o “caso de uso dos 90%”
Entregando com o Windows 10
O template esta no GitHub durante o desenvolvimento
Contribua para o Template10
http://aka.ms/template10
http://windows.Microsoft.com
Revisão
Uma única plataforma
Um Windows | Múltiplos dispositivos
Experiência do desenvolvedor
Ferramentas | .Net Native
Uma loja + Estratégias de Monetização
Propaganda | Compras
XAML
A plataforma de UI com XAML (Fundamental + Avançado)
Visite o site do programa MVP para ver a gravação!
http://aka.ms/Win10MVP
Perguntas?
Fique ligado para mais eventos globais dos MVPs!
Entre em http://mvp.microsoft.com

Windows 10 Developer Readiness - Brasil

Notas do Editor

  • #8 TODO: add some talking points why YOU as dev should care about Win10, mention the servicing to get everybody on the latest version Platform convergence has been a journey which ends today with Windows 10 We started by bringing Internet Explorer to Windows Phone 7.5 and even Xbox 360. With the release of Windows 8 we laid the foundation with the windows kernel, drivers etc. Windows Phone 8 took advantage of this. Xbox One was built on top of Windows 8 and even used the same runtime so developer could write apps in HTML/WinJS the same framework as available on Windows 8. With the release of Windows Phone 8.1 the runtimes from Windows 8.1 and phone came together as well. Over 90% API convergence and things like Windows Notification Services, sharing contracts, live tiles etc started to come together. Our endpoint Threshold brings together everything, the foundation is the same, kernel, drivers etc. The application platform is the same and we will go into a little bit more detail later in this presentation. Background data: 9/15/11 Windows Phone 7.5 10/26/12 Windows 8 10/29/12 Windows Phone 8 10/18/13 Windows 8.1 11/22/13 Xbox One 4/8/14 Windows 8.1 Update 3/26/14 Windows Phone 8.1
  • #25 Here’s an example of an app that used adaptive controls on: a Phone -- [click to build slide] a Tablet in portrait -- [click to build slide] and a PC in landscape The same elements are present across all three, but the layout has adapted. – [click to build slide] For example, we can see the command bar across all three screens: On the phone, space is limited and the command pbar is collapsed to a menu icon on the left to show the commands and a search icon on the right. On the tablet, there is enough room to show the commands along with a search icon And on the PC, the coamand bart has enough space to adapt to show all the commands plus a full search box [next slide]
  • #26 Adaptive controls are great, but we know there will be cases where the app designer wants to do something more custom or more tailored than the adaptive controls will allow. This desire might be motivated by hardware differences. For example, an app that will run on an Xbox might want to create some customizations for navigation using a game controller. Or it might be motivated by screen size and usability. A designer might want to position a menu at the bottom of a phone screen to make it more usable with a single hand. For these cases, we enable developers to create what we call a tailored user experience. In this case, the code is the same, but the developer creates custom XAML to deliver the desired design on the right device or in the right set of conditions. Tailored design goes beyond Adaptive UX Developers can create custom experiences for certain devices The code is the same, but custom XAML can deliver the experience a developer wants
  • #30 Or perhaps you could use the IsEventPresent to test for events such as: CameraHalfPressed Occurs when the user presses the hardware camera button halfway. CameraPressed Occurs when the user presses the hardware camera button. CameraReleased Occurs when the user releases the hardware camera button.
  • #38 Edition comparison: http://www.visualstudio.com/products/compare-visual-studio-products-vs Community: http://www.visualstudio.com/en-us/products/visual-studio-community-vs
  • #46 Because your app has all the dependencies shipped with it the platform can upgrade without impacting it, which means the platform does not have a dependency.