Diretrizes para dados de uso de conexão

Considere as seguintes recomendações ao usar as APIs de informações de rede do Tempo de Execução do Windows em seu aplicativo conectado.

Modificando o comportamento do aplicativo de acordo com o tipo de custo de rede

Embora o Windows 8 forneça automaticamente opções de conectividade quando um dispositivo detecta novas redes, não há nenhuma garantia de uma transição perfeita de conexões existentes para novas redes em cada operação. Um aplicativo da Windows Store que se conecta a destinos na Web deve usar APIs de Informações de Rede para obter informações de custo e eventos de mudança de status para a rede na qual ele está enviando/recebendo dados.

Use o valor NetworkCostType indicado para cada conexão para modificar seu comportamento adequadamente:

Tipo de Custo da Rede Comportamento de Aplicativo Recomendado

Irrestrito

  • Use a conexão de rede livremente.

Limite de Utilização de Dados Variável/Aproximado

  • Atrase ou agende operações de baixa prioridade até que uma rede sem restrições esteja disponível.
  • Ao transferir o conteúdo para um usuário, como filme ou vídeo, use uma taxa de bits mais baixa. Por exemplo, se o seu aplicativo estiver transferindo vídeo de qualidade HD, transfira uma Definição Padrão quando estiver em uma rede limitada.
  • Use uma largura de banda menor. Por exemplo, alternar para o modo somente cabeçalho ao receber emails.
  • Use a rede com menos frequência. Um exemplo de solução é reduzir a frequência de qualquer operação de sondagem An example solution is to reduce the frequency of any polling operations for syndicating news feeds, refreshing content for a website, or getting web notifications.
  • Permita que os usuários optem explicitamente por fazer o streaming de vídeo com qualidade HD, recuperar emails completos e baixar atualizações de menor prioridade, entre outros, em vez de fazer isso por padrão.
  • Solicite explicitamente a permissão do usuário antes de usar a rede.

Desconhecido

  • Se o tipo de custo da rede for desconhecido, trate-a como uma rede irrestrita.

 

Mantendo uma conexão confiável com a Web

Uma das maneiras mais fundamentais de o seu aplicativo demonstrar agilidade no espaço de rede é mantendo um nível consistente de qualidade ao fazer interface com a Web. Isso pode ser feito usando as informações fornecidas pelo perfil de conexão e notificações subsequentes de mudança de status de rede e identificando as redes disponíveis que atendem aos requisitos atuais.

Todos os aplicativos da Windows Store devem fazer o seguinte para dar suporte à conectividade com a Web:

  1. Chamar GetInternetConnectionProfile para verificar o custo de conexão com a Internet.
  2. Registre as notificações de alteração de status da rede para a conexão.
  3. Inicialize a operação da rede na conexão.
  4. Quando uma notificação de status de rede alterado é recebida, as opções de conectividade/custo disponíveis podem ter mudado. O aplicativo deve:
    • Verificar o custo da conexão à Internet. Se a característica de custo tiver mudado de irrestrita para limitada, ou de limitada para irrestrita, repita a operação de rede. O Windows usará automaticamente a rede com o menor custo disponível.
    • Se a característica de custo de se conectar à Internet não tiver mudado, mas uma notificação relacionada ao custo for recebida (por exemplo, mais de 80% do limite consumido, custo variável, roaming etc), adapte o comportamento conforme sugerido na tabela NetworkCostType acima.
  5. Se um erro indicar perda da conexão, o aplicativo deverá:
    • Verificar o custo de se conectar à Internet usando outra rede disponível. Siga as orientações fornecidas na tabela NetworkCostType acima.
    • Repita a operação. Se isso falhar, aguarde uma notificação NetworkStatusChange.

Depurando e solucionando problemas com o seu aplicativo conectado

Falhas de rede podem fazer com que os aplicativos travem, falhem ou exibam caixas de diálogo não acionáveis e mensagens de erro confusas aos usuários. A depuração desses erros pode ser difícil porque os erros podem ocorrer em qualquer lugar na pilha da rede.

Todos os aplicativos da Windows Store que usam a rede diretamente (usando soquetes) ou indiretamente (através de uma API que eventualmente usa a rede) são afetados. A situação ideal é que o sistema operacional automaticamente manipule condições de erro em benefício do desenvolvedor e quando isso não funcionar, os aplicativos devem estar preparados para lidar com erros.

Todos os aplicativos da Windows Store conectados devem fazer o seguinte:

  • Quando um erro de rede acontecer, repetir a operação se isso for apropriado. Por exemplo, não repita a operação se a autenticação falhar, mas repita a operação se a rede na qual você estava se comunicando desaparecer porque outra pode estar disponível. Muitos erros podem simplesmente desaparecer quando a operação é novamente tentada. Ao repetir a operação, seguir as diretrizes especificadas anteriormente em Reagindo a alterações de status da rede.
  • Certifique-se de usar APIs assíncronas para que não haja bloqueio nas chamadas do segmento da interface do usuário. Em outras palavras, se uma operação de rede demorar muito para ser concluída ou se houver um erro, o aplicativo não deve travar. Não emule o comportamento síncrono sobre a natureza assíncrona do Tempo de execução do Windows.
  • Teste o seu aplicativo em diferentes ambientes de rede com atividades como desconexão ou reconexão à rede, suspensão ou retomada e alternância de uma rede para outra.
  • Quando você estiver testando o seu aplicativo e encontrar erros que não são imediatamente óbvios, habilite o Rastreamento ETW.

Considerações de Segurança

Os artigos a seguir fornecem orientação sobre como gravar código C++ seguro.

Tópicos relacionados

Desenvolvendo aplicativos conectados (Whitepaper)

Exemplo de informações de rede

Para desenvolvedores (HTML)

Estado da conexão e gerenciamento de custo

Para desenvolvedores (XAML)

Estado da conexão e gerenciamento de custo