Desenvolvendo o Bing para Windows 8

Visão geral

Para o Windows 8, a equipe do Bing criou os aplicativos Notícias, Meteorologia, Finanças, Esportes, Viagem e Mapas. Essa visão geral técnica fornece uma noção da arquitetura desses aplicativos, dos principais recursos e contratos usados do Windows 8, dos controles comuns empregados e da preparação mundial em geral.

Há aproximadamente um ano, vários membros da equipe do Bing formaram outra equipe para fornecer um conjunto de aplicativos da plataforma Bing para o Windows 8. O foco desses aplicativos é manter os usuários informados oferecendo experiências rápidas e fluidas, com conteúdo de várias fontes. Todos os aplicativos são otimizados para toque e dispositivos de tablet, mas também funcionam muito bem com teclado e mouse. Passamos os últimos meses na preparação mundial desses aplicativos.

Ao desenvolver os aplicativos, tínhamos dois objetivos: criar um conjunto de ótimos aplicativos para tornar o Windows 8 ainda mais atraente e servir como um modelo para os desenvolvedores de aplicativos. Com este artigo, fornecemos uma visão geral técnica dos aplicativos e oferecemos noções/recursos que vocês poderão usar para desenvolver seus próprios aplicativos. Ao longo do processo, aprendemos muito: até mesmo algumas coisas que faríamos diferente de outra vez. Continue lendo para saber de toda a história.

Conheça a previsão do tempo dos locais de seu interesse.

Aplicativo Meteorologia: conheça a previsão do tempo dos locais de seu interesse.

Visão geral da arquitetura

Serviços da plataforma

Todos os nossos aplicativos são escritos em HTML/Java Script, exceto o aplicativo Mapas, que foi criado em XAML/C#. Todos os aplicativos compartilham uma plataforma de cliente comum que fornece vários serviços essenciais, como instrumentação, cache, consulta, configurações, roaming, gerenciamento de perfil, personalização de mercado e princípios básicos da fala. Optamos deliberadamente em ter cache do cliente, investir na pré-busca e na definição pelo cliente da hora de sair de diversas partes de dados por algumas razões.

Nossos aplicativos foram criados para todos os dispositivos de PC, muitos dos quais esperamos que sejam dispositivos de tablet. Os tablets com Windows 8 podem ser usados para consumo de conteúdo, bem como criação de conteúdo por consumidores e empresas. Em muitas situações, sabemos que os usuários passam por várias etapas de conectividade (totalmente conectados a redes rápidas, com conectividade fraca por WiFi ou celular, redes fragmentadas e mesmo sem conectividade). Nossa meta era criar um aplicativo de cliente avançado que fosse diferente de uma página na Web. Usamos os conceitos do IE de armazenamento em cache de todos os dados da rede para o sistema de arquivos e reutilização dos dados em cache durante a espera pela chegada dos dados atualizados. Também criamos experiências para quando os dados em cache não estivessem disponíveis e as solicitações da rede falhassem. Para esses cenários, fornecemos mensagens de erro amigáveis, mecanismos de repetição e detecção para alterações de conectividade da rede a partir do sistema operacional para acionar automaticamente uma tentativa.

Serviços de consulta

Nossos aplicativos usam vários serviços desenvolvidos na pilha do Bing e/ou no Windows Azure. Os serviços e dados do Bing são atendidos por servidores de aplicativos dedicados desenvolvidos na plataforma Bing. Por exemplo, o aplicativo Finanças usa intensamente os dados e serviços do Azure, enquanto os dados e serviços do aplicativo Mapas são fornecidos pelo controle de mapas, desenvolvido pela equipe do Mapas Bing. Nossos aplicativos também têm outros artigos, imagens e vídeos hospedados em nosso Sistema de Gerenciamento de Conteúdo. Se você quiser criar aplicativos que aproveitem o índice Web do Bing ou os principais dados de editor do setor, confira o Windows Azure Marketplace, onde é possível acessar a API de Pesquisa do Bing e informações dos principais editores, como o STATS Sports, ou de agências, como as Nações Unidas.

Cache

Oferecer suporte a centenas de milhões de usuários interagindo com aplicativos avançados alimentados por grande quantidade de dados e conteúdos exige muita computação de servidor. Para dimensionar as necessidades de hardware, juntamente com o número de usuários, investimos pesadamente no cache em diversas camadas. Nosso sistema de gerenciamento de conteúdo renderizando servidores e serviços no Azure, bem como a própria plataforma de cliente local, armazenam dados em cache para reduzir a carga dos servidores. Se você estiver antecipando milhares de usuários, considere o cache local como forma de limitar a computação de servidor e melhorar a experiência do usuário – você pode saber mais sobre o cache de aplicativo (AppCache) no Centro de Desenvolvimento.

Algumas das maneiras que nossos aplicativos usam o cache no cliente envolvem:

  1. O gerenciamento das versões em alta e baixa resolução da mesma imagem: a seleção de o que exibir com base no que está ou não em cache.
  2. O cache do cliente que substitui o tempo do conteúdo definido pelo servidor. Muitas vezes, os serviços que usamos não nos pertencem e não podemos controlar esses tempos de vida. Nesse caso, nosso cliente decide sobre o cache.
  3. O cuidado para ao menos exibir os dados em cache obsoletos em vez de baixar novos dados que poderão ser inválidos.

Controles personalizados

O design é um diferencial fundamental para nossos aplicativos e desempenha uma função importante no desenvolvimento de aplicativos intuitivos e visualmente organizados. Para obter uma aparência e experiência consistentes e uma experiência visualmente imersiva em todos os nossos aplicativos, desenvolvemos controles personalizados sobre os controles de interface do usuário atraentes que o Windows oferece. Se você quiser uma aparência e experiência consistentes em todos os seus aplicativos ou desejar fornecer uma interface do usuário exclusiva, sugerimos que aproveite a flexibilidade do Windows e desenvolva sua própria estrutura UX ou controles personalizados sobre o Windows 8. Há amplos recursos disponíveis no MSDN para ajudá-lo a criar sua própria estrutura UX e controles personalizados.

Failsafe

Se seu aplicativo conta com dados de terceiros, planeje interrupções completas, bem como parciais, dos provedores de dados eventualmente. Tentamos fazer com que nossos aplicativos evitassem pontos únicos de falha e desenvolvemos mecanismos de failsafe. Investimos em várias práticas de failsafe tanto no servidor quanto no cliente principalmente em prol de nossos usuários. Em todos os nossos aplicativos, temos dados e serviços de muitas partes da Microsoft, assim como de parceiros do setor. Todos esses recursos externos têm graus variados de SLA de tempo de atividade e interrupções de nível de serviço de TTM (tempo para migração). Qualquer panorâmica em qualquer aplicativo poderia contar com dados e serviços de várias fontes. Para fornecer uma boa experiência ao usuário final, usamos técnicas de failsafe no servidor e no cliente, incluindo cache, provedores de backup, degradação amigável de recursos ou failback em dados obsoletos aceitáveis em alguns casos (por exemplo, informações de destino). Leve em conta essas medidas de failsafe e crie interfaces de usuário e mensagens de erro adaptativas ao projetar e desenvolver seu aplicativo, não durante ou após uma falha de dados.

Estrutura do cliente – opções de linguagem

Uma pergunta que os desenvolvedores sempre fazem é por que implementamos o uso de HTML do cliente em vez de HTML5 baseado em servidor. A resposta mais curta é porque os aplicativos no Windows 8 não são sites da Web. A criação de um ótimo aplicativo da Windows Store requer um nível de integração mais profundo com a plataforma que simplesmente não podemos obter com o código padrão da Web. Se fornecêssemos recursos somente através do mesmo HTML visto normalmente no navegador, as páginas não teriam acesso aos recursos do Windows 8 que de fato tornam a experiência do usuário maravilhosa.

Desenvolver um aplicativo nos proporcionou várias vantagens, incluindo:

  1. O uso dos controles internos da Biblioteca do Windows para JavaScript (WinJS), que nos permitiu aproveitar a potência do Windows 8 e as experiências que a equipe do Windows desenvolveu. Achamos que fornecemos uma ótima experiência de usuário (UX) oferecida pela WinJS.

  2. Os recursos da plataforma de aplicativo nativo não acessíveis por HTML5 em um navegador:

    • Recursos de dispositivo, como acesso a microfone, webcam ou rede
    • Locais de arquivo compartilhados, como Meus Documentos, Música, Imagens ou Vídeos
    • Participação em contratos, incluindo aqueles para pesquisa, compartilhamento, configuração, contatos, etc.
    • Além de certas bibliotecas serem melhores em WinRT em comparação ao HTML5. Por exemplo, as APIs de geolocalização WinRT são mais avançadas do que as encontradas no HTML5.
  3. A complementação do código JavaScript com código em C# de grande desempenho, inserido estatisticamente. Usamos construtores de linguagem que não existem em JavaScript – por exemplo, LINQ, bem como a estrutura assíncrona .Net4.5. Essa última é muito importante porque ajuda a garantir a precisão em operações assíncronas, que podem se tornar muito complexas.

    Tenha em mente que se você gravar um WinMD para hospedar lógica de negócios (seja em C# ou C++), haverá um custo para o marshaling de muitos dados entre linguagens. É melhor ter uma chamada que faz o marshaling de muitos dados do que muitas chamadas que fazem o marshaling de poucos dados. Além disso, C# e JavaScript têm coletores de lixo independentes, separados. Como não são sincronizados, é possível que o seu uso de memória seja maior do que se você escrevesse um aplicativo usando inteiramente JavaScript ou C#.

    Quando desenvolvemos nossos aplicativos, decidimos que os benefícios de um aplicativo com linguagens misturadas JavaScript e C# valeria o custo adicional de contornar essas complexidades. Garantimos que nossos aplicativos continuam com ótimo desempenho. Se você estiver pensando em combinar JavaScript e C# em seu aplicativo, mantenha em mente o custo adicional e a complexidade. Assim, você poderá escolher a arquitetura mais adequada aos requisitos do seu aplicativo.

  4. O desenvolvimento do nosso aplicativo Mapas sobre XAML para acessar o controle de mapas DirectX nativo. Essa abordagem nos proporcionou ainda mais controle e melhor desempenho de renderização (crítica com um mapa).

O desenvolvimento para Windows oferece um conjunto padrão de experiências (tamanho de tela, destinos de toque, estados de exibição, dimensões de orientação, entre outros). Quisemos ajustar nosso código para oferecer a melhor experiência de usuário, dado o dispositivo do usuário. Uma experiência HTML de abordagem única não nos permite fornecer uma experiência de usuário otimizada e consistente.

Os principais recursos e contratos do Windows 8

Como disse anteriormente, um dos nossos objetivos foi servir como um modelo para desenvolvedores de aplicativos de terceiros. Quisemos destacar vários dos principais recursos e contratos do Windows 8 que implementamos em um esforço para tornar nossos aplicativos mais atraentes aos consumidores, bem como realçar o que está disponível para você no Windows 8:

Barra de aplicativos

Todos os aplicativos oferecem navegação na barra de aplicativos superior e botões de comando contextualmente relevantes na barra de aplicativos inferior. Eles são acessados por gesto (passando o dedo da parte superior da tela para a parte inferior ou ao contrário).

Aplicativo Mapas - barra de aplicativos

Aplicativo Mapas - barra de aplicativos

Modo Snap

Todo aplicativo apresenta um modo snap cuidadosamente projetado. Não replicamos simplesmente todos os recursos do aplicativo em uma exibição mais restrita. Ao contrário, pensamos em como o aplicativo poderia ser usado quando ajustado. No aplicativo Notícias, por exemplo, fornecemos acesso rápido à lista de matérias, mas não temos um modo de leitura em miniatura. Esperamos que os usuários voltem à tela inteira quando quiserem ler. No aplicativo Finanças, a exibição ajustada está voltada para os índices principais e sua lista de ações marcadas como favoritas. No aplicativo Meteorologia, a exibição ajustada fornece uma descrição resumida do clima nos próximos dias.

Aplicativo Meteorologia e Finanças – Modo Snap

Aplicativo Meteorologia e Finanças – Modo Snap

Compartilhamento

Todos os nossos aplicativos oferecem suporte ao contrato de Compartilhamento de Fonte. Esse contrato nos permite enviar dados para destinos compartilhados como o aplicativo Email ou Pessoas.

Aplicativo Notícias – Compartilhamento

Aplicativo Notícias – Compartilhamento

Impressão

O aplicativo Mapas oferece suporte ao contrato do botão Imprimir para impressão de mapas, detalhes, direções e resultados de pesquisa.

Tela de bloqueio

O aplicativo Meteorologia usa a tela de bloqueio para informar o usuário sobre a previsão do tempo no momento, sem precisar desbloquear e executar o aplicativo ou mesmo ir até o menu Iniciar.

Blocos dinâmicos

Exceto o aplicativo Mapas, todos os outros têm blocos dinâmicos e oferecem aos consumidores notificações úteis como as últimas manchetes do noticiário, previsão do tempo, placares esportivos ou outras informações interessantes. Assim, mesmo na tela inicial, esses aplicativos são dinâmicos com atividade, incentivando os usuários a iniciarem os aplicativos para saber mais.

Pesquisar

Todos os aplicativos oferecem suporte ao contrato do Windows Search pelo botão Pesquisar. O botão Pesquisar continua sendo o ponto onde os consumidores encontram os arquivos, aplicativos e outras informações locais no Windows 8.

Aplicativo Viagem - Pesquisar

Aplicativo Viagem - Pesquisar

Configurações

Todos os aplicativos oferecem suporte ao botão Configurações. O botão Configurações proporciona aos usuários uma maneira consistente de acessar as configurações em todos os aplicativos.

Zoom Semântico

Nossas exibições panorâmicas e de lista oferecem suporte ao Zoom Semântico, uma técnica otimizada para toque para apresentação e navegação de grandes conjuntos de conteúdo em uma única exibição. Como nossos aplicativos são repletos de conteúdo, com muitos grupos de informações, o Zoom Semântico permite que os usuários obtenham uma visão geral de todo esse conteúdo e pulem diretamente para o grupo de interesse.

Globalização

Cada aplicativo usa o novo gerenciador de idiomas e as configurações iniciais de local do Windows 8 para otimização e obtenção da melhor experiência para o usuário. Conforme os usuários começarem a conhecer essas configurações e perceberem que os aplicativos os respeitam, todos os aplicativos terão melhores resultados.

Acessibilidade

Uma de nossas metas ao desenvolver os aplicativos foi oferecer a todos os usuários o excelente nível de acessibilidade e produtividade fornecido pela nova interface do usuário do Windows 8. Veja abaixo alguns destaques do trabalho de acessibilidade que fizemos para nossos aplicativos.

  • Teclado - Nosso objetivo era manter o comportamento rápido e fluido do teclado encontrado na tela inicial do Windows 8 e em todos os aplicativos do Windows. Os usuários podem navegar pelas grades dos blocos e cabeçalhos usando as teclas de seta e acioná-las com as teclas ENTER ou SPACEBAR. Nosso maior desafio foi a natureza dinâmica de alguns de layouts de bloco (por exemplo, do aplicativo Notícias). Baseados nas diretrizes do Windows, adotamos algumas convenções que são diferentes da página da Web típica em um modelo de navegador. Em nossos aplicativos, é possível usar a tecla BACKSPACE para "voltar", em vez de usar ALT+LEFT, ou um botão "Voltar do navegador", caso seu teclado tenha um.
  • Leitor de Tela – Aproveitamos o HTML4 (h1-h6, ol, li, etc.), o suporte aprimorado à marcação semântica em HTML (cabeçalho, hgroup, seção, etc.), e o empolgante universo das funções, estados e propriedades ARIA para auxiliar à tecnologia assistencial (AT) do leitor de tela como forma de melhorar a experiência de todos os usuário. Além de testar e depurar ativamente com o Narrador, descobrimos Inspect, uma ferramenta útil que oferece uma exibição de árvore de acesso programático dinâmica usada pelo Narrador. 
  • Toque do Narrador – As bases sólidas que lançamos para a acessibilidade do teclado e do leitor de tela (hierarquia DOM, HTML semântico, funções/estados/propriedades ARIA, etc.) calçaram o caminho para garantir que nossos aplicativos oferecessem suporte a todos os recursos de toque do Narrador, como invocação por toque duplo, movimentação com gesto de passar 2 dedos e alternância entre itens. Com o Toque do Narrador ativado, clientes com problemas visuais podem usar o Windows 8 com telas sensíveis ao toque.

Controles personalizados

Embora cada um de nossos aplicativos forneça informações e funcionalidades exclusivas, todos compartilham o mesmo design geral de interface do usuário que os une visualmente. Por exemplo, os botões de navegação na barra de aplicativos superior funcionam da mesma maneira e têm a mesma aparência em todos os nossos aplicativos. Os novos artigos no aplicativo Esportes compartilham os mesmos elementos visuais do aplicativo Finanças.

Uma meta fundamental para nós era fazer todos os aplicativos com a mesma aparência e experiência. Seguindo as diretrizes e os princípios básicos do Windows, queríamos que todos os nossos aplicativos tivessem um fluxo de trabalho comum para cumprir tarefas básicas, como adicionar uma marca de seleção nas ações no aplicativo Finanças ou adicionar um local no aplicativo Meteorologia. Uma interface comum permite que os usuários interajam com vários aplicativos de forma mais intuitiva. Do ponto de vista da engenharia, isso nos permitiu compartilhar uma grande base de código entre nossos diversos aplicativos e liberar nossos engenheiros para se concentrar em desenvolver recursos diferenciais específicos para cada aplicativo. Para alcançar essa meta, criamos vários controles UX personalizados (veja os detalhes abaixo) específicos que são usados pelos nossos aplicativos Finanças, Meteorologia, Esportes, Viagem e Notícias.

Há muitos controles intrínsecos básicos disponíveis em HTML para os desenvolvedores aproveitarem, como botões e caixas de texto. Ainda por cima, a WinJS fornece fornece controles mais avançados com interfaces de usuário e lógica de negócios mais complexas, como exibição de lista e barra de aplicativos. Ao identificar que controles usar para os elementos visuais em nossos aplicativos, tivemos o cuidado de reutilizar controles intrínsecos ou WinJS o máximo possível. Nos casos em que precisamos de mais interfaces de usuário ou lógicas de negócios mais sofisticadas, desenvolvemos controles comuns que seguem as diretrizes da WinJS. Alguns de nossos controles personalizados são controles compostos feitos de controles básicos HTML e WinJS, embora alguns sejam derivados dos controles WinJS e outros sejam escritos do zero.

Integração com a WinJS

Ao criar controles personalizados usando os mesmos princípios dos controles WinJS, facilitamos o desenvolvimento e a depuração dos aplicativos por nossos engenheiros que usam tanto os controles personalizados quanto WinJS de forma mais direta. Acima de tudo, sendo desenvolvida a partir de modelos WinJS, a camada de apresentação de nossos controles (HTML/CSS) é isolada da lógica de negócios (Javascript). Veja aqui alguns dos princípios fundamentais que seguimos:

  • Cada controle tem um construtor para WinJS que aceita dois argumentos: o elemento DOM de nível superior e as opções de controle para essa instância.
  • Para trabalhar com associações de modelo WinJS, definimos getters e setters públicos em cada controle que refletem o modelo de dados observável subjacente a esse controle.
  • Evitamos criar comportamentos que exigissem lidar diretamente com a instância do controle. Cada interação é facilitada através de propriedades e métodos públicos.
  • Aproveitamos as APIs WinJS.Namespace e WinJS.Class para definir nossos controles em uma sintaxe intuitiva e familiar aos desenvolvedores.
  • Para adicionar eventos personalizados a um controle, misturamos nossas classes de controles com WinJS.Utilities.eventMixin ou WinJS.UI.DOMEventMixin. Isso amplia nossos controles com métodos para expedição de eventos e adição ou remoção de ouvintes de eventos. A interface desses métodos é addEventListener, removeEventListener e dispatchEvent, muito familiares aos desenvolvedores HTML e Javascript. Para obter mais informações sobre como criar controles WinJS personalizados, clique aqui.

Usando CSS para layout

Aproveitamos o desempenho acelerado de hardware e diversos dos novos recursos maravilhosos do CSS para criar o layout dos nossos controles.

  • Usamos grades, flexbox, regiões, exclusões, panorâmica e zoom, animações e transformações para produzir layouts avançados, cujo desenvolvimento é menos intuitivo, senão impossível, em CSS2 e versões anteriores. Usamos consultas de mídia de CSS para manipular o layout e obter resoluções e orientações de tela diferentes. Essa é a melhor forma de lidar com rotação e ajuste porque retira a sobrecarga da GPU e libera os ciclos da CPU.

Em geral, garantimos a expansão da lógica do layout para CSS o máximo possível para manter uma alta taxa de quadros e fluidez da interface do usuário.

Controles personalizados evidentes

Há diversos controles personalizados que nossos aplicativos usam para melhorar a experiência dos usuários. Entre eles, dois controles aproveitam a infraestrutura descrita acima:

  • Anúncios - É possível exibir anúncios em nossos aplicativos nas panorâmicas e nos artigos exibidos (o “leitor de artigos”). Nossa equipe usa o controle de anúncios do Microsoft Advertising SDK para renderizar anúncios. Os artigos têm uma propriedade que especifica se estão qualificados ou não para um anúncio. O leitor de artigo geralmente usa uma lógica de contagem bem simples para exibir um anúncio de página inteira na segunda página de um artigo ou um anúncio de torre em coluna simples no final do artigo ou os dois.
  • Leitor de Artigo - Todo aplicativo tem acesso ao controle Leitor de Artigo. Nossos aplicativos podem passar inúmeros fragmentos, imagens e vídeos em HTML, juntamente com informações de layout, e o leitor de artigos mostrará automaticamente o conteúdo em formato de colunas. O controle é implementado com o novo mecanismo de regiões HTML em HTML5. Ele pode analisar os dados apropriados do sistema CMS automaticamente sem exigir que o aplicativo o faça de forma manual.
    Novos aplicativos mostrando o controle Leitor de Artigo

Novos aplicativos – Controle Leitor de Artigo

Preparação mundial

Dado o alcance global da Windows Store, antecipamos que você talvez queira estender seus aplicativos a mercados e idiomas diferentes. Como dissemos anteriormente, todos os nossos aplicativos estão disponíveis em todos os mercados com suporte do Windows. Optamos pela compilação para todos os mercados com suporte do Windows como uma forma de levar nossos aplicativos ao maior número possível de clientes Windows. Esta seção destaca os principais componentes do trabalho que fizemos para preparar mundialmente todos os nossos aplicativos.

  • Localização - A primeira (e, provavelmente, a mais óbvia) tarefa que você deverá executar é a tradução. Localizamos o conjunto de aplicativos em 106 idiomas. Para tanto, configuramos um processo para realizar as traduções do cromado dos aplicativos, bem como as traduções do servidor, em várias camadas intermediárias. Além disso, há um kit de ferramentas útil para o Visual Studio que inclui suporte à localização – saiba mais sobre esse kit de ferramentas aqui. Dependendo do nível de penetração que você queira em cada mercado, precisará traduzir o cromado, assim como o conteúdo em seus aplicativos.
  • Personalização de mercado - Como parte de nosso sistema de configuração, é possível habilitar ou desabilitar recursos nos aplicativos conforme o mercado em que o aplicativo esteja sendo executado. Em geral, definimos um mercado como a combinação de preferências de idioma dos usuários (em Painel de Controle -> Relógio, Idioma e Região -> Idioma) com as configurações iniciais de local do usuário no Windows (em Região -> Local). As APIs que usamos para fornecer personalização de mercado incluem:

Alguns recursos específicos de mercado em nossos aplicativos:

    • Aplicativo Viagem - Pesquisa de voo por mercados específicos (por ex.: PT-BR, FR-FR)
    • Aplicativo Meteorologia - Utilização de diversos recursos de previsão do tempo por mercado
    • Aplicativo Esportes - Ligas esportivas específicas de região disponíveis por padrão para o usuário
  • Mecanismos específicos de local físico - Há dois mecanismos em que o local físico real do usuário é usado:

    • Bloqueio de inicialização de aplicativo - Se o aplicativo estiver em uma área onde não tenhamos permissão de oferecer conteúdo (região embargada), o aplicativo exibirá uma mensagem para o usuário indicando que não poderá ser executado nessa região e será encerrado.
    • Mercadização de local físico - Se o usuário estiver em um país onde determinados recursos possam ou não ser habilitados, ou determinados servidores devam ser usados (como poderá ocorrer com você ao desenvolver aplicativos para alguns mercados), o aplicativo poderá configurar esse requisito. Isso exige a modificação do recurso Personalização de mercado citado acima.
  • Recursos de preparação mundial específicos de aplicativo – Criamos inúmeros recursos em nossos aplicativos com apelo internacional. Por exemplo, optamos por compilar e enfatizar cronogramas e status de voos em nosso aplicativo Viagem em vez de apenas reservar o voo porque não podemos oferecer no momento reservas de voo em diversos mercados internacionais. Se você estiver desenvolvendo aplicativos para mercados internacionais, sugerimos que pense previamente nos mercados onde não poderá implantar recursos específicos e concentre seu tempo no desenvolvimento e aprimoramento dos recursos que poderão e serão usados mais amplamente.

Desempenho e capacidade de resposta

Entre as etapas RTM e GA do Windows 8, as equipes passaram por uma etapa de melhorias de desempenho. Algumas dessas áreas que foram alteradas incluem:

  • Ajuste do processo de inicialização para otimizar o uso da CPU e as chamadas de E/S. Algumas das tarefas incluem:
    • Executar tarefas independentes em paralelo de forma que isso possa ser feito em núcleos diferentes.
    • Garantir que as tarefas associadas à CPU não sejam bloqueadas nas tarefas associadas à E/S
  • Garantir que a pré-busca ocorra corretamente para que os dados estejam disponíveis para um usuário antes de sua exibição. Por exemplo, podemos fazer a pré-busca do primeiro artigo de uma panorâmica porque os usuários tendem a clicar nesta com mais frequência.
  • Adicionar lógica de negócios ao nosso controle de imagens para que exiba imagens com alta e baixa resoluções perfeitamente – ou seja, leia do cache ou da rede, dependendo de o que já estiver em cache.
  • Minimizar o número de chamadas de função que realizam marshaling nos limites de JS/C#/C++.
  • Garantir que as tarefas de longo processamento no thread da interface do usuário sejam divididas em tarefas menores à parte. Isso minimiza os congelamentos da interface do usuário.
  • Distribuir referências para arquivos de imagem no disco em vez de acrescentá-las como blobs e transmiti-las como objetos binários grandes. Blobs são bons para certos tipos de operações, mas quando precisamos distribuir um número maior de imagens, o desempenho é reduzido.

Queremos saber sua opinião!

Além de sugerirmos que experimentem nossos aplicativos e nos enviem os respectivos comentários, queremos saber sua opinião. Faça um comentário e conte mais sobre sua experiência em desenvolver aplicativos para o Windows 8. Envie suas dúvidas e teremos prazer em em fornecer mais detalhes. Também gostaríamos de saber o que poderíamos fornecer para ajudá-los a desenvolver aplicativos para o Windows 8.

--Jigar Thakkar, Gerente de Desenvolvimento de Parceiros, Equipe de Experiências com Aplicativos