Ao desenvolvermos o modelo de aplicativo para o Windows 8 e os novos aplicativos estilo Metro, o requisito de arquitetura principal foi oferecer aplicativos que possam ser usados com confiança -- a confiança de que os aplicativos funcionarão respeitando os recursos, não interferirão com outros aplicativos, usarão os recursos de sistema com a sua permissão, poderão ser instalados e desinstalados facilmente etc. Esses atributos exigem uma plataforma robusta e um conjunto forte de ferramentas para os desenvolvedores. Esses esforços exigem recomeçar do zero e não podem ser criados sobre um sistema existente. Esta postagem foi escrita por John Hazen, um gerente de programas da nossa equipe de experiência do desenvolvedor. --Steven

Um dos nossos princípios fundamentais no desenvolvimento da plataforma de aplicativos estilo Metro do Windows 8 foi garantir que os usuários pudessem confiar em seus aplicativos. Essa é uma missão que temos em conjunto; nesta postagem, explico a nossa visão de aplicativos de confiança e confiabilidade e ajudamos o leitor a criar aplicativos que tenham a confiança como padrão.

Vou começar explicando o que quero dizer com confiança. Imagine um cliente navegando na Windows Store em busca de um aplicativo estilo Metro; desejamos que ele pense somente no aplicativo, se ele é ideal para ele ou não. Desejamos que ele tenha como pressuposto — confie, na verdade — que o aplicativo terá o comportamento que ele espera, ou seja, funcione bem em seu sistema, use somente os dados e informações autorizados e coexista em harmonia com os outros aplicativos.

A nossa meta com a plataforma é ajudar todos nós a criar ótimos aplicativos que incorporem essa visão de confiança para que tenhamos a confiança como padrão. Com essa finalidade, fizemos investimentos em todo o sistema. Veja como ele foi imaginado:

Diagrama dos fatores que contribuem para a confiança no aplicativo identificados com legenda

Confiança no aplicativo: SDK do Windows 8 para aplicativos estilo Metro, Kit de Certificação de Aplicativos Windows, Assinaturas de aplicativo,
Contêiner de aplicativo, Classificações e avaliações, Entrada na Loja, Instalação simples, Feedback de telemetria

Esta postagem aborda essas áreas e, no final, detalha as funcionalidades dos aplicativos. Primeiro, uma rápida visão geral:

  • Windows Store – Para os clientes, tudo começa na Loja, onde eles encontram todos os aplicativos estilo Metro. Para entrar na Loja, o seu aplicativo é avaliado quanto à conformidade técnica e política, o que inclui verificações de segurança. Depois de publicado na Loja, o seu aplicativo é classificado e avaliado pela comunidade. Juntas, as avaliações da comunidade e do processo de entrada ajudam a criar um ambiente em que os clientes podem experimentar os aplicativos com confiança.
  • Instalação do aplicativo – O Windows 8 cuida de todos os detalhes da implantação de aplicativos para você. Dessa forma, os clientes não precisam se preocupar com o prejuízo que a instalação, atualização ou remoção de um aplicativo pode causar a outros aplicativos.
  • SDK – O SDK do Windows 8 para aplicativos estilo Metro oferece um conjunto bem definido de APIs que o ajudam a criar aplicativos confiáveis que atendam aos requisitos de entrada na Loja e as melhores experiências para os seus clientes.
  • Contêiner de aplicativo e funcionalidades – O Windows 8 oferece um nível de separação entre os aplicativos maior do que era possível com os aplicativos de desktop tradicionais, portanto, você pode criar aplicativos que interajam entre si de formas mais previsíveis, proporcionando aos clientes uma experiência mais consistente.

É claro que reconhecemos que todo processo de entrada pode ser burlado, os conjuntos de APIs, prejudicados, os limites do SDK, ignorados de forma perspicaz e que os contêineres de aplicativo não são impenetráveis. Mas temos certeza de que os investimentos que fizemos nesse novo ecossistema o ajudará a criar aplicativos que agradarão muito os clientes. A abordagem multidimensional é a forma mais eficiente de conquistar a confiança do cliente, e aperfeiçoaremos cada dimensão com o tempo, conforme aprendermos com a experiência. Agora, vamos falar sobre confiança.

A Windows Store

Várias pessoas da equipe compartilharam um pouco sobre o plano e o design geral da Loja no Blog da Windows Store. Se você ainda não teve a oportunidade, leia sobre a Loja. Ela desempenha um papel central ao ajudá-lo na conexão com os seus clientes. Vamos ver como a Loja ajuda a estabelecer confiança no ecossistema de aplicativos.

Primeiro, o processo de entrada na Loja estabelece uma linha de base consistente para a confiabilidade e a qualidade do aplicativo. Os testes de conformidade técnica contidos no Kit de Certificação de Aplicativos Windows, permitem que você saiba se o seu aplicativo atende aos padrões esperados antes de enviá-lo. Conforme você e outros desenvolvedores continuarem oferecendo aplicativos que atendam a esses padrões, os clientes ficarão empolgados para descobrir e experimentar novos aplicativos, criando um ecossistema de aplicativos mais forte para todos nós.

Com a Loja, os clientes podem oferecer classificações e avaliações mais facilmente, o que ajudará os melhores aplicativos a se destacar, instigando ainda mais clientes a experimentar com confiança os aplicativos com melhor classificação. Na página de detalhes do aplicativo de exemplo abaixo, observe os realces não apenas das classificações e avaliações, mas também dois outros elementos importantes da página de detalhes do aplicativo. Antes de instalar um novo aplicativo, os clientes poder ver quais permissões ele tem depois de instalado (mais detalhes sobre isso serão fornecidos posteriormente no blog). Após a instalação de um aplicativo, se o cliente ficar preocupado quanto ao comportamento ou conteúdo de um aplicativo, ele poderá facilmente relatar essas preocupações e nós poderemos entrar em contato com você para tratar dos problemas identificados. Ajudar os clientes a decidir quais aplicativos melhor atendem a suas necessidades e permitir que os clientes forneçam comentários e feedback, é uma forma importante de aperfeiçoar a confiança geral no ecossistema de aplicativos do Windows 8.

Página de exemplo de detalhes do aplicativo de jogo na Windows Store, link de relatório e permissões, avaliações e classificações

Página de detalhes do aplicativo da Windows Store

A Loja coleta dados de telemetria que podem ajudá-lo a investigar problemas que os seus clientes veem, incluindo o número e tipos de falhas ocorridas. Avaliamos essa telemetria automatizada para saber se o comportamento de um aplicativo não é confiável ou não atende às expectativas dos nossos clientes. A nossa meta é fazer uso efetivo não somente dos comentários individuais fornecidos pelos clientes sobre aplicativos por meio de classificações e avaliações, mas também oferecer informações sobre como está sendo o funcionamento do seu aplicativo nos computadores dos clientes. Dessa forma, você tem a oportunidade de aperfeiçoar o seu aplicativo com base nesses dados.

De todas essas formas, a Windows Store é o seu parceiro de conexão com as pessoas que desejam os seus aplicativos, ajudando-as a ter uma ótima experiência com os seus aplicativos.

Aplicativos a apenas um clique de distância

Tendo a atenção do cliente na página de detalhes do aplicativo, você não deseja que nada atrapalhe a obtenção do seu aplicativo pelo cliente. No Windows 8, basta clicar em um único botão para obter um aplicativo. Os clientes não precisam passar por uma série de perguntas nem clicar em vários botões. Depois de fazer logon na Loja e encontrar o que desejam, basta que eles cliquem no botão e confirmem a compra!

A ótima notícia é que você não precisa gravar nem uma única linha de código de instalação para fazer essa mágica acontecer; tudo é fornecido como parte do Windows 8. O Windows não cuida apenas da instalação, mas também usa assinaturas digitais para garantir a integridade do seu aplicativo, da Loja à instalação, e também quando ele é carregado e executado no computador do cliente. Se o Windows detecta que o aplicativo não mais corresponde à sua assinatura digital, ele orienta o cliente a baixar a versão correta da Loja.

Como o Windows instala cada aplicativo em um local distinto, com locais separados e privados para os dados e configurações de cada aplicativo, os clientes não precisam se preocupar com a interferência da instalação ou remoção de um aplicativo no comportamento de outros aplicativos ou do computador. Os clientes ficarão mais motivados do que nunca para experimentar mais aplicativos, sabendo que a instalação e remoção de aplicativos não prejudicará sua experiência ao longo do tempo (na verdade, com os contratos do Windows 8, cada aplicativo instalado torna a experiência melhor). Você se beneficia sabendo que há pouca coisa que outro aplicativo poderia fazer que prejudicasse a experiência do cliente com o seu aplicativo.

Ter um único mecanismo consistente e comprovado para instalar aplicativos não apenas simplifica o seu trabalho, como também proporciona uma experiência fácil e positiva aos seus clientes, possibilitando que fiquem mais confiantes para adquirir mais aplicativos excelentes seus. Saiba mais sobre a implantação dos seus aplicativos em App packages and deployment (Pacotes de aplicativos e implantação).

SDK do Windows 8 para aplicativos estilo Metro

Quanto melhor a experiência dos clientes com os seus aplicativos, mais facilmente eles experimentarão novos aplicativos e atualizações quando forem lançados por você. O SDK do Windows 8 para aplicativos estilo Metro é uma ótima base para você criar aplicativos que os clientes não hesitarão em instalar.

O conjunto de APIs que oferecemos para aplicativos estilo Metro foi muito pensado, não apenas para simplificar o ambiente de programação do Windows, como também para oferecer uma plataforma bem testada em que você pudesse criar os seus aplicativos de forma confiante, sabendo que eles funcionarão bem com o modelo de aplicativo estilo Metro do Windows 8.

Resista à tentação de descobrir maneiras de invocar APIs que não estejam incluídas no SDK. Isso acaba com as expectativas dos clientes em relação ao seu aplicativo. Não há garantias de que as APIs de fora do SDK funcionem com aplicativos estilo Metro tanto nesta quanto em futuras versões. O seu aplicativo pode não funcionar corretamente para todos os clientes. Essa APIs também pode não funcionar corretamente no ambiente assíncrono, que é a base do design de aplicativos estilo Metro. Essas APIs podem minar a confiança do cliente, acessando recursos ou dados com os quais aplicativos estilo Metro normalmente não interagem. Por todos esses motivos, fornecemos verificações no Kit de Certificação de Aplicativos Windows para ajudá-lo a descobrir locais em que você possa ter chamado interfaces não expostas pelo SDK.

Embora seja possível ocultar ou ofuscar chamadas a APIs não incluídas no SDK, isso é uma violação da política da Loja e das expectativas do cliente. Finalmente, criamos essa plataforma para ajudar desenvolvedores como você a criar incríveis aplicativos que funcionem bem com o sistema e com outros aplicativos e dispositivos que os clientes adoram. Trabalhar com o SDK estilo Metro é fundamental para que você atinja essa meta.

Funcionando bem juntos e separados

Um processo de instalação limpo é importante para os seus clientes, e o SDK o ajuda a criar aplicativos que interajam bem com o sistema. Além disso, os clientes esperam que o seu aplicativo e a nossa plataforma ofereçam um alto nível de confiabilidade. Ajudamos você a alcançar as suas metas de confiabilidade oferecendo um nível de separação entre aplicativos estilo Metro maior do que é possível com os aplicativos tradicionais da área de trabalho do Windows. No Windows 8, cada aplicativo estilo Metro é executado em um contêiner de aplicativo exclusivo que ajuda a isolar o aplicativo e seus dados de outros aplicativos estilo Metro.

Os contêiners de aplicativo oferecem algumas características que são compartilhadas por todos os aplicativos estilo Metro. Eles:

  • Oferecem um ambiente dedicado para o seu aplicativo, incluindo o seu próprio repositório de dados e configurações. Você quase não precisa se preocupar com alterações no comportamento, configurações e dados do seu aplicativo causadas por outro aplicativo estilo Metro.
  • Ajude a garantir que o seu aplicativo não interfira acidentalmente na confiabilidade da própria plataforma Windows nem use fortuitamente os dados ou dispositivos dos seus clientes de formas não esperadas por eles.
  • Ofereça uma maneira bem definida de informar as funcionalidades do seu aplicativo por meio de declarações feitas no manifesto e divulgue ao seu cliente na página de detalhes do aplicativo.

Com esse nível de separação, é muito mais fácil escrever aplicativos que sejam confiáveis e respeitem o usuário. Ao mesmo tempo, todos desejamos aplicativos que interajam bem entre si. O Windows 8 oferece vários mecanismos para que os aplicativos estilo Metro funcionem uns com os outros e com a plataforma para oferecer essas experiências satisfatórias, incluindo:

  • Os contratos do aplicativo, que são a "cola" que liga os aplicativos estilo Metro entre si e à interface do usuário do sistema.
  • O FilePicker, que permite que o seu aplicativo interaja com dados selecionados pelo usuário.
  • As Declarações de funcionalidade do aplicativo, que permitem que o aplicativo interaja com dispositivos e dados de forma programada quando apropriado para a sua funcionalidade.

Todas elas são maneiras bem definidas para que o seu aplicativo interaja de forma mais profunda com os outros aplicativos do sistema. O contêiner de aplicativo se destina a ajudá-lo a atender às expectativas do seu cliente quanto à confiabilidade e o uso respeitoso de seu sistema e dados. As restrições do contêiner de aplicativo têm o objetivo de ajudar a atender ao que o cliente espera do aplicativo: que tenha comportamentos consistentes e intuitivos. O uso de técnicas que permitam que o seu aplicativo execute código fora de um contêiner de aplicativo é uma violação da política da Loja e da confiança do usuário.

Nas nossas discussões com os desenvolvedores durante esse período de pré-lançamento, vimos aplicativos que não entenderam ou usaram acidentalmente alguns desses mecanismos de forma errada, portanto, vamos ver mais detalhes sobre as funcionalidades do aplicativo em particular.

Declarações de funcionalidades do aplicativo

O contêiner de aplicativo pode ser ampliado de várias maneiras com o uso de declarações de funcionalidades, sendo que cada uma delas foi criada para permitir determinados cenários. Portanto, recomendamos que você as use somente sob determinadas condições. Essas funcionalidades se encaixam em 4 categorias principais:

  • Bibliotecas de dados: por padrão, os aplicativos não têm acesso às bibliotecas de dados dos clientes, como Músicas ou Documentos. Recomendamos o uso do FilePicker para interação com essas bibliotecas, no entanto, em alguns casos raros, é necessário que o seu aplicativo possa ler e gerenciar dados diretamente nesses locais.
  • Acesso a dispositivo: por padrão, os aplicativos não podem usar dispositivos que a maioria dos usuários considera invasão de privacidade, como webcam, microfone e localização. Quando os aplicativos precisam desses dispositivos, eles precisam declarar sua intenção e ter o consentimento do usuário.
  • Acesso à rede: por padrão, os aplicativos não têm acesso às redes dos clientes. Como a maioria dos aplicativos interage com a Internet, habilitamos essa funcionalidade específica em todos os modelos do Visual Studio para aplicativos estilo Metro. Se o simples acesso à Internet não for suficiente para o seu aplicativo, leia sobre as suas opções abaixo.
  • Identidade do usuário: essas funcionalidades oferecem acesso direto a uma determinada informação de logon corporativo do cliente ou a certificados associados à sua identidade. Essas funcionalidades, embora raras, são necessárias para determinados aplicativos de empresa, e você pode precisar usá-las em cenários como transações bancárias, em que um cartão inteligente pode ser exigido para autorização.

Declarar uma funcionalidade de qualquer uma dessas categorias é tão simples quanto selecioná-la no designer de manifesto do Visual Studio. Mas somente adicione funcionalidades se o aplicativo realmente necessitar delas para um determinado cenário. Durante o Consumer Preview, a Loja recebeu vários aplicativos que declararam todas as funcionalidades ou funcionalidade que não era essencial ao aplicativo. Portanto, sendo a lista de funcionalidades possíveis relativamente curta, vale examinar detalhadamente cada uma delas e como elas devem ser usadas.

Captura de tela do designer de manifesto do Visual Studio mostrando a guia de funcionalidades na qual você pode selecionar recursos do sistema ou dispositivos que podem ser usados pelo seu aplicativo

Designer de manifesto do Visual Studio

Bibliotecas de dados

Essa funcionalidade permite que o aplicativo acesses dados do usuário que não sido necessariamente criados no seu aplicativo. Os usuários esperam que os aplicativos sejam respeitosos quanto ao acesso de seus dados particulares. Uma maneira de honrar a confiança que os usuários depositam no seu aplicativo é declarar somente o acesso mínimo de que ele necessita. Na maioria dos casos, você pode evitar todas essas funcionalidades usando o FilePicker. Com ele, o usuário pode procurar arquivos em qualquer local de seu disco rígido ou rede. Por exemplo, use o FilePicker para permitir a abertura de um arquivo ou adicionar o recurso Salvar como ao aplicativo a fim de oferecer ao usuário a oportunidade de salvar conteúdo do seu aplicativo em locais de sua biblioteca ou armazenamento removível.

Declaração de manifesto

O que ela oferece

musicLibrary

Oferece a funcionalidade de adicionar, alterar ou excluir arquivos na biblioteca Músicas do PC local e PCs do grupo doméstico.

videoLibrary

Oferece a funcionalidade de adicionar, alterar ou excluir arquivos na biblioteca Vídeos do PC local e PCs do grupo doméstico.

pictureLibrary

Oferece a funcionalidade de adicionar, alterar ou excluir arquivos na biblioteca Imagens do PC local e PCs do grupo doméstico.

documentsLibrary

Oferece a funcionalidade de adicionar, alterar ou excluir arquivos na biblioteca Documentos do PC local e PCs do grupo doméstico. O aplicativo somente pode acessar tipos de arquivos da Biblioteca Documentos que são definidos com o uso da declaração de Associações de tipo de arquivo. O aplicativo não pode acessar a biblioteca Documentos de PCs do grupo doméstico.

removableStorage

Oferece a funcionalidade de adicionar, alterar ou excluir arquivos em dispositivos de armazenamento removível. O aplicativo somente pode acessar tipos de arquivos de armazenamento removível que são definidos no manifesto usando a declaração de Associações de tipo de arquivo. O aplicativo não pode acessar armazenamento removível de PCs do grupo doméstico.

Durante o Consumer Preview, recebemos vários aplicativos que declararam todas essas funcionalidades quando não era realmente necessário. Por exemplo, houve aplicativos que declararam documentsLibrary por inúmeras razões, incluindo:

  • Armazenar configurações específicas do aplicativo na biblioteca de documentos. O repositório privado foi criado com essa função. Saiba mais sobre repositório e configurações de aplicativo aqui.
  • Armazenar um arquivo gerado pelo usuário. Isso é realizado de forma mais adequada usando-se o FilePicker, para permitir que o usuário salve o arquivo em qualquer lugar, incluindo a biblioteca de documentos.
  • Compartilhar um documento com outro aplicativo. O contrato de compartilhamento foi criado com essa finalidade.

Se o seu aplicativo for o manipulador principal de um determinado tipo de arquivo no sistema, por exemplo, um Visualizador de Fax que precise manipular todos os arquivos da biblioteca de documentos do usuário, declare essa funcionalidade.

Acesso a dispositivo

Muitos dispositivos, como sensores de orientação e acelerômetros, estão disponíveis para todo aplicativo. Mas a maioria dos clientes considera determinados dispositivos mais invasivos do que outros, por serem fortemente associados à privacidade do usuário. Você pode criar muitos aplicativos excelentes nesses dispositivos. Por exemplo, se você tiver um jogo que permita partidas compartilhadas, o uso da proximidade será uma ótima maneira de estabelecer uma conexão entre dispositivos.

Como esses dispositivos estão fortemente associados à privacidade do usuário, o Windows 8 garante que, se você declarar essa funcionalidade, o cliente será solicitado a aprovar esse acesso na primeira vez que o seu aplicativo tentar acessar esse dispositivo específico. Por exemplo, se o seu aplicativo oferecer mapas, você provavelmente desejará acessar os dados de localização geográfica do cliente. Na primeira vez que o seu aplicativo tentar obter essas informações, o cliente verá uma solicitação de aprovação do acesso do aplicativo. Essa aprovação será mantida até quando o cliente decidir remover explicitamente o acesso por meio das configurações. Como o cliente pode recusar o acesso do seu aplicativo a esses dispositivos, mesmo que você tenha adicionado a funcionalidade ao manifesto, projete o aplicativo para lidar com a falta de acesso. Por exemplo, se o cliente tiver recusado o acesso do seu aplicativo ao GPS interno, você pode simplesmente solicitar que o usuário selecione seu local em um mapa.

Declaração de manifesto

O que ela oferece

localização

Oferece acesso à localização atual, que é obtido por meio de hardware dedicado, como um sensor de GPS no PC ou de informações de rede disponíveis.

webcam

Oferece acesso à transmissão de vídeo da webcam, o que permite que o aplicativo capture instantâneos e filmes de webcams conectadas.

microfone

Oferece acesso à transmissão de áudio do microfone, o que permite que o aplicativo grave áudio de microfones conectados.

proximidade

Oferece a funcionalidade de conexão com dispositivos próximos ao PC via rádio de proximidade de campo. A proximidade de campo pode ser usada para enviar arquivos ou se comunicar com um aplicativo ou dispositivo próximo.

Acesso à rede

A maioria dos aplicativos precisa de conexão com a Internet, portanto, os modelos do Visual Studio para aplicativos estilo Metro incluem a funcionalidade internetClient por padrão. Se o seu aplicativo não precisar se comunicar pela Internet, você deve remover essa funcionalidade. A funcionalidade internetClientServer normalmente é usada em cenários P2P (ponto a ponto), como jogos ou VOIP, mas somente use essa funcionalidade se o aplicativo precisar abrir uma porta no firewall. Use a funcionalidade privateNetworkClientServer quando o seu aplicativo precisar se comunicar via redes privadas, por exemplo, entre dispositivos de uma casa ou em uma conexão de rede corporativa.

Declaração de manifesto

O que ela oferece

internetClient

Oferece acesso de saída à Internet e redes de locais públicos como aeroportos e cafés. A maioria dos aplicativos que necessitam da Internet deve usar essa funcionalidade.

internetClientServer

Oferece acesso de entrada e saída à Internet e às redes de locais públicos como aeroportos e cafés. Essa funcionalidade inclui a internetClient. A internetClient não precisa ser habilitada se essa funcionalidade também estiver habilitada.

privateNetworkClientServer

Oferece acesso de entrada e saída a redes de Intranet que tenham um controlador de domínio autenticado ou que o usuário tenha definido como redes domésticas ou corporativas.

Identidade do usuário

A maioria dos desenvolvedores não precisa dessas funcionalidades. O uso delas será altamente restrito e sujeito à avaliação e política de entrada adicional. Mas há casos em que essas funcionalidades são necessárias e apropriadas, por exemplo, alguns bancos exigem a autenticação de dois fatores e precisam permitir que os clientes forneçam um cartão inteligente que contém um certificado digital que confirma sua identidade. Outros aplicativos voltados para clientes empresariais, e não consumidores, podem precisar acessar recursos corporativos que não podem ser acessados sem as credenciais de domínio.

Declaração de manifesto

O que ela oferece

enterpriseAuthentication

Oferece a funcionalidade de se conectar a recursos de intranet corporativa que exigem credenciais de domínio.

sharedUserCertificates

Oferece a funcionalidade de acessar certificados de software e hardware, como certificados de cartões inteligentes para validar a identidade de um usuário. Quando APIs relacionadas são invocadas no tempo de execução, o usuário precisa realizar alguma ação (inserir cartão, selecionar certificado etc.). Essa funcionalidade não é necessária se o seu aplicativo incluir um certificado privado por meio de uma declaração de Certificados.

Conquistando a confiança

Os clientes desejam usufruir o Windows 8 e os aplicativos criados por você de forma segura. A experiência dos aplicativos estilo Metro foi criada para facilitar a criação de aplicativos que todos possam experimentar e comprar com segurança. Isso estabelece um ciclo construtivo em que as pessoas adoram e compram vários aplicativos e que gera oportunidades para os desenvolvedores criarem e oferecerem cada vez mais aplicativos estilo Metro excelentes.

Como observei no início, nós estamos juntos nisso; temos certeza de que os investimentos coletivos que fizemos neste novo ecossistema o ajudarão a criar aplicativos que cativarão as pessoas. Esperamos tê-lo como parceiro para oferecer experiências novas e incríveis para os nossos clientes em comum.

--John Hazen