Quale tecnologia di rete scegliere?

Panoramica delle tecnologie di rete disponibili per gli sviluppatori UWP, con suggerimenti su come scegliere le tecnologie adatte per un'app specifica.

Socket

Usa Socket quando comunichi con un altro dispositivo e vuoi usare il tuo protocollo.

Sono disponibili due implementazioni di socket per sviluppatori della piattaforma UWP (Universal Windows Platform): Windows.Networking.Sockets e Winsock. Se stai scrivendo un nuovo codice, Windows.Networking.Sockets ha il vantaggio di essere un'API moderna, progettata per l'uso da parte degli sviluppatori UWP. Se usi librerie di rete multipiattaforma o altro codice Winsock esistente o preferisci l'API Winsock, puoi usarla.

Quando usare i socket

  • Entrambe le implementazioni di socket consentono di comunicare con altri dispositivi usando protocolli di propria scelta, tramite TCP o UDP.

  • Scegli l'API socket più adatta alle tue esigenze in base all'esperienza e a qualsiasi codice esistente che potresti utilizzare.

Quando non usare socket

  • Non implementare uno stack HTTP(S) personalizzato usando i socket. Usa invece HttpClient.
  • Se i WebSocket (classi StreamWebSocket e MessageWebSocket ) soddisfano le esigenze di comunicazione (TCP da/verso un server Web), è consigliabile usarli invece di dedicare tempo e risorse di sviluppo per implementare funzionalità simili con socket.

WebSocket

Il protocollo WebSocket definisce un meccanismo per la comunicazione bidirezionale veloce e sicura tra un client e un server sul Web. I dati vengono immediatamente trasferiti su una connessione full duplex su singolo socket, consentendo l'invio e la ricezione dei messaggi in tempo reale da entrambi gli endpoint. I WebSocket sono ideali per l'uso nei giochi in tempo reale, in cui le notifiche di social network istantanee e le visualizzazioni aggiornate di informazioni (come le statistiche del gioco) devono essere sicure e usare il trasferimento rapido dei dati. Gli sviluppatori UWP possono usare le classi StreamWebSocket e MessageWebSocket per connettersi ai server che supportano il protocollo Websocket.

Quando usare Websocket

  • Quando desideri inviare e ricevere dati su base continuativa tra un dispositivo e un server.

Quando non usare Websocket

  • Se invii o ricevi dati raramente, potrebbe risultare più semplice effettuare singole richieste HTTP dal dispositivo al server, anziché stabilire e gestire una connessione WebSocket.
  • I WebSocket potrebbero non essere adatti per situazioni di volume molto elevato. Prendi in considerazione la modellazione dei flussi di dati e la simulazione del traffico tramite WebSocket prima di eseguirne l'uso nella progettazione.

HttpClient

Usa HttpClient (e il resto dell'API dello spazio dei nomi Windows.Web.Http) quando usi HTTP(S) per comunicare con un servizio Web o un server Web.

Quando usare HttpClient

  • Quando usi HTTP(S) per comunicare con i servizi Web.
  • Durante il caricamento o il download di un numero ridotto di file più piccoli.
  • Se i WebSocket (le classi StreamWebSocket e MessageWebSocket) soddisfano le esigenze di comunicazione (TCP da/verso un server Web) e il server Web in questione supporta WebSocket, è consigliabile usarli invece di dedicare tempo e risorse di sviluppo che implementano funzionalità simili con HttpClient.
  • Quando si esegue lo streaming di contenuti in rete.

Quando non usare HttpClient

  • Se trasferisci file di grandi dimensioni o un numero elevato di file, è consigliabile usare i trasferimenti in background.
  • Per ridurre i limiti di caricamento/download in base al tipo di connessione o salvare lo stato di avanzamento e riprendere il caricamento/download dopo un'interruzione, è necessario usare i trasferimenti in background.
  • Se comunichi tra due dispositivi e nessuno dei due è progettato per fungere da server HTTP(S), è consigliabile usare i socket. Non tentare di implementare il proprio server HTTP e usare HttpClient per comunicare con esso.

Trasferimenti in background

Usa l'API di trasferimento in background quando desideri trasferire in modo affidabile i file in rete. L'API di trasferimento in background fornisce funzionalità avanzate di caricamento e download eseguite in background durante la sospensione dell'app, che persistono oltre la chiusura dell'app. L'API monitora lo stato della rete e sospende e riprende automaticamente i trasferimenti quando la connettività viene persa. I trasferimenti sono anche compatibili con Data Sense e Battery Sense, il che significa che l'attività di download si adatta in base allo stato corrente della connettività e della batteria del dispositivo. Queste funzionalità sono essenziali quando l'app è in esecuzione su dispositivi mobili o a batteria. L'API è ideale per caricare e scaricare file di grandi dimensioni usando HTTP(S). Anche FTP è supportato, ma solo per i download.

Una nuova funzionalità di trasferimento in background di Windows 10 è la possibilità di attivare la post-elaborazione al termine di un trasferimento di file. Sarà così possibile aggiornare i cataloghi locali, attivare altre app o notificare all'utente quando un download è completato.

Quando usare i trasferimenti in background

  • Usa i trasferimenti in background per trasferire in modo affidabile file di grandi dimensioni o un numero elevato di file.
  • Usa i trasferimenti in background con i gruppi di completamento del trasferimento in background quando desideri eseguire il trasferimenti di file post-elaborazione con un'attività in background.
  • Usa i trasferimenti in background se vuoi essere in grado di riprendere un trasferimento in corso dopo un'interruzione della rete.
  • Usa i trasferimenti in background se vuoi modificare il comportamento di trasferimento in base alle condizioni di rete, ad esempio in un piano dati a consumo.

Quando non usare i trasferimenti in background

  • Se trasferisci un numero ridotto di file di piccole dimensioni e non è necessario eseguire alcun tipo di post-elaborazione al termine del trasferimento, è consigliabile usare i metodi PUT o POST HttpClient.
  • Se vuoi trasmettere i dati e usarli in locale man mano che arrivano, usa HttpClient.

Qualità della connessione

Le API dello spazio dei nomi Windows.Networking.Connectivity consentono di accedere alle informazioni relative a connettività, costi e utilizzo della rete. Per altre informazioni sull'uso di queste API, vedere Accesso allo stato della connessione di rete e gestione dei costi della rete.

Individuazione servizio DNS

L'API Windows.Networking.ServiceDiscovery.Dnssd consente di annunciare un servizio di rete ad altri dispositivi in rete usando il protocollo DNS-SD descritto in IETF RFC 2782.

Comunicazione tramite Bluetooth

Tra le altre cose, l'API Windows.Devices.Bluetooth consente di usare il Bluetooth per connettersi ad altri dispositivi e trasferire i dati. Per altre informazioni, vedi Inviare o ricevere file con RFCOMM.

Notifiche push (WNS)

L'API Windows.Networking.PushNotifications consente di usare Windows Notification Service (WNS) per ricevere notifiche push in rete. Per altre informazioni sull'uso di questa API, vedi Panoramica di Windows Push Notification Services (WNS)

Near Field Communications

L'API Windows.Networking.Proximity consente di usare comunicazioni di prossimità per le app che usano prossimità o tocco con i dispositivi per consentire un semplice trasferimento dei dati. Per altre informazioni sull'uso di questa API, vedere Prossimità e tocco.

Feed RSS/Atom

L'API Windows.Web.Syndication consente di gestire i feed di diffusione usando i formati RSS e Atom. Per altre informazioni sull'uso di questa API, vedi i feed RSS/Atom.

Enumerazione Wi-Fi e controllo connessione

L'API Windows.Devices.WiFi consente di enumerare le schede Wi-Fi, cercare le reti Wi-Fi disponibili e connettere una scheda a una rete.

Controllo radio

L'API Windows.Devices.Radios consente di trovare e controllare le radio sul dispositivo locale, tra cui Wi-Fi e Bluetooth.

Wi-Fi Direct

L'API Windows.Devices.WiFiDirect consente di connettersi e comunicare con altri dispositivi locali usando Wi-Fi Direct per creare reti wireless locali ad hoc.

Servizi Wi-Fi Direct

L'API Windows.Devices.WiFiDirect.Services consente di fornire servizi Wi-Fi Direct e connettersi a essi. I servizi Wi-Fi Direct sono il modo in cui un dispositivo su una rete ad hoc diretta Wi-Fi (un inserzionista di servizi) offre funzionalità a un altro dispositivo (un cercatore di servizi) tramite una connessione Wi-Fi diretta.

Operatori di telefonia mobile

Windows 10 offre a un grande pubblico di sviluppatori alcune API che prima erano disponibili solo per i produttori di dispositivi e gli operatori di telefonia mobile. Nota che, sebbene ora queste API siano esposte, vengono gestite anche da funzionalità di app specifiche che devono essere approvate da Microsoft prima che un'app possa essere pubblicata. L'uso effettivo di queste API sarà comunque limitato principalmente ai produttori di dispositivi e agli operatori di telefonia mobile.

Operazioni di rete

L'API Windows.Networking.NetworkOperators gestisce principalmente la configurazione e il provisioning dei telefoni. Di conseguenza, l'autorizzazione a usare le funzionalità che la controllano sono limitati ai produttori di dispositivi e ai provider di telecomunicazioni.

SMS

Lo spazio dei nomi Windows.Devices.Sms gestisce gli SMS e i messaggi correlati come entità di basso livello. Viene fornito per l'uso da parte degli operatori di telefonia mobile per utilizzare gli SMS indirizzati all'app ed è controllato da una funzionalità che non verrà approvata per l'uso da parte della maggior parte degli sviluppatori di app. Se stai scrivendo un'app per gestire i messaggi, devi usare invece l'API Windows.ApplicationModel.Chat, in quanto è progettata per gestire non solo messaggi SMS, ma anche messaggi provenienti da altre origini, ad esempio app di chat in tempo reale, consentendo un'esperienza di chat/messaggistica molto più completa.