Linee guida per i dati sull'uso delle connessioni

Fai riferimento ai consigli seguenti quando usi le API di informazioni sulla rete di Windows Runtime nella tua app connessa.

Modifica del comportamento dell'app in base al tipo di costo della rete

Anche se Windows 8 fornisce automaticamente opzioni di connettività quando un dispositivo rileva nuove reti, non esiste alcuna garanzia di transizioni fluide dalle connessioni esistenti alle nuove reti per ogni operazione. Un'app di Windows Store che si connette a destinazioni sul Web deve usare le API di informazioni sulla rete per ottenere le informazioni sui costi e gli eventi di modifica dello stato relativi alla rete su cui vengono inviati e ricevuti dati.

Usa il valore di NetworkCostType indicato per ogni connessione per modificare in modo appropriato il comportamento dell'app:

Tipo di costo della rete Comportamento dell'app consigliato

Senza restrizioni

  • Usa la connessione di rete normalmente.

Limitazione dei dati variabile/fissa

  • Ritarda o pianifica operazioni con priorità inferiore finché non diventa disponibile una rete senza restrizioni.
  • Durante la trasmissione di contenuti come film o video a un utente, usa una velocità in bit inferiore. Se ad esempio l'app trasmette video di qualità HD, in una rete a pagamento è opportuno usare la definizione standard.
  • Limita l'uso della larghezza di banda, ad esempio passando alla modalità di sola intestazione per la ricezione di e-mail.
  • Usa la rete meno frequentemente. Una soluzione consiste ad esempio nel ridurre la frequenza delle operazioni di polling per la diffusione di newsfeed, l'aggiornamento del contenuto di un sito Web o la ricezione di notifiche Web.
  • Consente agli utenti di scegliere esplicitamente di trasmettere video in alta definizione, recuperare e-mail complete, scaricare aggiornamenti con priorità inferiore ecc. invece di impostare questa opzione come predefinita.
  • Chiede esplicitamente l'autorizzazione dell'utente prima di usare la rete.

Sconosciuto

  • Se il tipo di costo della rete è sconosciuto, trattalo come il tipo senza restrizioni.

 

Mantenimento di una connessione affidabile con il Web

Uno dei modi fondamentali con cui un'app può dimostrare flessibilità nello spazio di rete sta nella sua capacità di mantenere un livello uniforme di qualità quando si interfaccia con il Web. Per ottenere questo risultato, l'app deve sfruttare le informazioni fornite dal profilo di connessione e dalle successive notifiche di modifica dello stato della rete, nonché identificare le reti disponibili che soddisfano i requisiti correnti.

Per supportare la connettività Web, tutte le app di Windows Store devono:

  1. Chiamare GetInternetConnectionProfile per controllare il costo della connessione a Internet.
  2. Registrarsi per ricevere le notifiche di modifica dello stato della rete per la connessione.
  3. Inizializzare l'operazione di rete sulla connessione.
  4. Quando viene ricevuta una notifica di modifica dello stato della rete, le opzioni di costo/connettività disponibili possono cambiare. In questo caso:
    • L'app deve controllare il costo della connessione a Internet. Se le caratteristiche di costo della connessione sono cambiate (da senza restrizioni in a pagamento o viceversa), deve provare a rieseguire l'operazione di rete. Windows usa automaticamente la rete a costo più basso disponibile.
    • Se le caratteristiche di costo della connessione a Internet non sono cambiate, ma viene ricevuta una notifica sul costo (ad esempio che è stato consumato oltre l'80% del tetto massimo oppure relativa a costi variabili, roaming e così via), l'app deve adattare il proprio comportamento come suggerito nella tabella NetworkCostType precedente.
  5. Se un errore indica che la connessione si è interrotta:
    • L'app deve controllare il costo della connessione a Internet tramite un'altra rete disponibile. Segui le linee guida fornite nella tabella NetworkCostType precedente.
    • L'app deve ripetere l'operazione. Se il tentativo non riesce, deve attendere fino a ricevere una notifica NetworkStatusChange.

Debugging e risoluzione dei problemi delle app connesse

Guasti alla rete possono causare il blocco o l'arresto delle applicazioni, mostrare caselle di dialogo non funzionanti e presentare messaggi di errore ambigui agli utenti. Provvedere al debugging di questi errori non è sempre facile, perché possono verificarsi in qualsiasi punto dello stack di rete.

Sono interessate tutte le app di Windows Store che usano la rete direttamente, mediante socket, o indirettamente, mediante un'API che usa una rete. La situazione ideale si ha quando il sistema operativo gestisce automaticamente le condizioni di errore al posto dello sviluppatore e, in caso non funzioni, le applicazioni devono essere pronte a correggere tali errori.

Per tutte le app di Windows Store connesse è necessario configurare questo comportamento:

  • Quando si verifica un errore di rete, l'app prova a ripetere l'operazione, se appropriato. Ad esempio, l'app non deve provare a ripetere l'operazione se l'autenticazione non riesce, ma deve effettuare questo tentativo se la rete con cui comunicava si interrompe, perché potrebbe esserne disponibile un'altra. Molti errori possono risolversi ripetendo l'operazione. Per questo tentativo, segui le linee guida specificate in precedenza in Risposta ai cambiamenti di stato della rete.
  • Usa API asincrone, in modo che non vi siano chiamate bloccanti sul thread dell'interfaccia utente. In altre parole, se un'operazione di rete richiede molto tempo per il completamento o si verifica un errore, la tua applicazione non dovrebbe bloccarsi. Non emulare un comportamento sincrono sovrastando la natura asincrona di Windows Runtime.
  • Verifica l'applicazione in vari ambienti di rete, provando a disconnetterti e riconnetterti alla rete, sospendere o riprendere il collegamento o passare da una rete a un'altra.
  • Durante i test dell'applicazione per trovare errori non immediatamente ovvi, abilita Traccia ETW.

Considerazioni sulla sicurezza

Gli articoli seguenti offrono indicazioni per la scrittura di codice C++ sicuro.

Argomenti correlati

Sviluppo delle applicazioni connesse (whitepaper)

Esempio di informazioni di rete

Per sviluppatori (HTML)

Gestione dello stato e del costo della connessione

Per sviluppatori (XAML)

Gestione dello stato e del costo della connessione