Funzionalità di rete

Usare un'implementazione più semplice di HTTP per tutte le lingue supportate, comunicazioni di rete più facili per la tua app e nuove API per gli scenari mobili basati sulla posizione per sviluppare app connesse versatili.

Funzionalità nuove o aggiornate in Windows 8.1

Nuova API client HTTP

[Accedi all'esempio HTTPClient ora.]

Windows 8.1 introduce Windows.Web.Http, lo spazio dei nomi di Windows Runtime che usi per le app Windows che si connettono a HTTP e a servizi Web REST (Representational State Transfer). Questa nuova API offre un supporto completo delle funzionalità per tutti i linguaggi supportati e sostituisce l'API HTTP rilasciata in origine per Windows 8.

Per le operazioni di richiesta di base, la nuova API prevede una semplice interfaccia per gestire le attività più comuni e offre impostazioni predefinite sensate per l'autenticazione (AUTH) applicabili alla maggior parte degli scenari. Per le operazioni HTTP più complesse sono disponibili capacità aggiuntive, tra le quali:

  • Metodi per i verbi comuni (DELETE, GET, PUT e POST)

  • Possibilità di recuperare, impostare ed eliminare cookie

  • Supporto di impostazioni e schemi di autenticazione comuni

  • Info sullo stato delle richieste HTTP disponibili per i metodi asincroni

  • Accesso ai dettagli SSL (Secure Sockets Layer) sul trasporto

  • Possibilità di includere filtri personalizzati nelle app avanzate

Lo spazio dei nomi Windows.Web.Http.Headers supporta la creazione di intestazioni HTTP e cookie, che vengono poi associati come proprietà a oggetti HttpRequestMessage e HttpResponseMessage.

Ecco un esempio di codice che mostra come usare la nuova API per creare una richiesta GET HTTP di base per recuperare contenuto in un server Web come stringa tramite la nuova API.


var uri = new Uri("http://example.com/datalist.aspx");
var httpClient = new HttpClient();

// Always catch network exceptions for async methods.
    httpClient.GetStringAsync (uri).done(function () {
            // Get completed operation.
       }, onError);


function onError(reason) {
    // Details in reason.Message and ex.HResult.       
}

// Once your app is done using the HttpClient object call close to 
// free up system resources (the underlying socket and memory used for the object)
// httpClient.close();


Filtri personalizzati per le richieste HTTP

Con il nuovo modello di filtro per le richieste Web supportato dal nuovo spazio dei nomi Windows.Web.Http.Filters, è più semplice che mai effettuare richieste Web adatte a scenari specifici di connettività e sicurezza, come:

  • Gestione dell'autenticazione

  • Limitazione dell'accesso nelle reti a consumo

  • Ripetizione automatica dei tentativi in caso di errori di connessione

  • Supporto di tecniche di programmazione moderne come il mocking

In genere non è difficile gestire una singola condizione della rete o delle sicurezza prevista durante una richiesta, ma gestire molte di queste condizioni può diventare una sfida. Puoi usare questa nuova API per creare numerosi filtri semplici e poi concatenarli in base alle esigenze. In questo modo puoi sviluppare le funzionalità per le richieste Web in base alla complessità prevista, senza dovere però realizzare codice altrettanto complesso.

HttpClient è la classe principale che userai per l'invio e la ricezione delle richieste su HTTP. Questa classe usa la classe HttpBaseProtocolFilter per stabilire come inviare e ricevere i dati. La classe HttpBaseProtocolFilter è quindi la fine logica di qualsiasi catena di filtri personalizzati. Ogni istanza di HttpClient può avere una catena o pipeline di filtri diversa, come qui illustrato.

Disegno di una catena di filtri HTTP

Per scrivere un filtro personalizzato, devi creare una versione personalizzata dell'interfaccia IHttpFilter. Usa il metodo IHttpFilter.SendRequestAsync per specificare le modalità di funzionamento del filtro. Per scrivere un filtro, puoi usare C#, Visual Basic .NET o C++. Questi filtri possono essere chiamati e usati da qualsiasi linguaggio supportato da Windows Runtime.

Ecco un esempio di codice per un filtro che aggiunge un'intestazione personalizzata alle richieste e alle risposte HTTP.



// A filter that adds a custom header to every Http request and response
public class PlugInFilter : IHttpFilter {
    private IHttpFilter innerFilter;

    public PlugInFilter(IHttpFilter innerFilter) {
        if (innerFilter == null) {
            throw new ArgumentException("innerFilter cannot be null.");
        }
        this.innerFilter = innerFilter;
    }

    // The SendRequest method where we add the custom headers
    public IAsyncOperationWithProgress<HttpResponseMessage, HttpProgress> SendRequestAsync(HttpRequestMessage request) {
        return AsyncInfo.Run<HttpResponseMessage, HttpProgress>(async (cancellationToken, progress) =>
        {
            request.Headers.Add("Custom-Header", "CustomRequestValue");
            HttpResponseMessage response = await innerFilter.SendRequestAsync(request).AsTask(cancellationToken, progress);

            cancellationToken.ThrowIfCancellationRequested();

            response.Headers.Add("Custom-Header", "CustomResponseValue");
        return response;
        });
    }

    public void Dispose() {
        innerFilter.Dispose();
        GC.SuppressFinalize(this);
    }
}


Per usare questo filtro, passa la relativa interfaccia al costruttore HttpClient(IHttpFilter) quando crei un nuovo oggetto HttpClient. Per configurare una catena di filtri, collega i nuovi filtri a un filtro precedente e a un oggetto HttpBaseProtocolFilter alla fine della catena.

Questo codice di esempio mostra come creare un oggetto HttpClient e concatenarlo a un singolo filtro personalizzato.



internal static void CreateHttpClient(ref HttpClient httpClient)
{
    if (httpClient != null) {
        httpClient.Dispose();
    }

    // Extend HttpClient by chaining filters together
    // and then providing HttpClient with the configured filter pipeline.
    var basefilter = new HttpBaseProtocolFilter();

    // Adds a custom header to every request and response message.
    var myfilter = new PlugInFilter(basefilter);
    httpClient = new HttpClient(myfilter);

}



Aggiornamenti del trasferimento in background

[Accedi all'esempio di trasferimento in background ora.]

Windows 8.1 introduce aggiornamenti di Windows.Networking.BackgroundTransfer che semplificano ulteriormente i download e i caricamenti di file per gli sviluppatori, con una conseguente esperienza migliore per gli utenti finali.

  • Con la nuova classe BackgroundTransferGroup è semplice per la tua app creare questi gruppi ed eseguire download e caricamenti in parallelo, in sequenza o in base alla priorità. Se un utente decide di scaricare e guardare gli episodi di una famosa serie televisiva, ad esempio, la tua app può impostare una priorità maggiore per i primi episodi della serie oppure lasciare scegliere all'utente quale episodio scaricare per primo.

  • La tua app può ora aggiornare il riquadro animato oppure usare notifiche di tipo avviso popup per fornire info sullo stato all'utente. Puoi configurare queste notifiche tramite i nuovi metodi nelle classi BackgroundDownloader e BackgroundUploader.

  • Il trasferimento in background passa ora automaticamente un download su una rete preferita (ad esempio una rete senza restrizioni) se è possibile riprendere il download ed è probabile che richieda più di due minuti.

Supporto delle comunicazioni in tempo reale per scenari di standby connesso

[Accedi all'esempio di comunicazioni in tempo reale ora.]

Le funzionalità di rete in background consentono ora alle app nella schermata di blocco di Windows di ricevere pacchetti di rete anche quando l'app non è più in esecuzione, perché il dispositivo è in modalità a basso consumo, come lo standy connesso. Gli aggiornamenti includono:

  • Supporto delle comunicazioni in tempo reale per la nuova API Windows.Web.Http.

  • Supporto delle ore in modalità silenziosa, una nuova funzionalità di Windows 8.1.

  • Un nuovo tipo di notifica per le app VoIP (Voice over IP) che consente loro di rispondere alle chiamate anche quando lo schermo è bloccato.

  • Quattro slot hardware per il supporto dello stato di standby connesso nella maggior parte dei dispositivi di rete (gli slot software più comuni non supportano lo standby connesso).

Aggiornamenti dello standby connesso

Lo standby connesso è uno speciale stato di alimentazione per i dispositivi Windows. Consente alle app di eseguire attività di connettività limitate, mentre lo schermo del dispositivo è spento e il dispositivo si trova in stato di standby (basso consumo). Le comunicazioni in tempo reale e le funzionalità di rete in background usano lo stato di standby connesso solo quando è supportato dalla scheda di rete del dispositivo.

Windows 8.1 introduce questi aggiornamenti per lo standby connesso, in modo che le tue app possano offrire un'esperienza connessa, disponibile in tutte le fasi del ciclo di vita di un dispositivo:

  • È stato aggiunto il supporto per le schede Ethernet e Mobile Broadband (le schede Wi-Fi erano già supportate).

  • Supporto di un maggior numero di slot hardware per alcune schede di rete che li offrono (più slot significa che un maggior numero di app nella schermata di blocco può usare lo standby connesso). Le prime 3 app nella schermata di blocco che effettuano la registrazione di uno slot hardware possono usare al massimo 3 slot hardware per app.

Supporto dei recinti virtuali

[Accedi all'esempio di recinto virtuale ora.]

In Windows 8.1 è stato introdotto il supporto dei recinti virtuali. Un recinto virtuale permette a un'app di definire un raggio attorno a un punto di interesse geografico e fare in modo che il sistema generi un avviso per l'app quando il dispositivo entra in tale area o ne esce. Con questo aggiornamento della funzionalità di georilevazione di Windows, la tua app può inviare una notifica a un utente quando sono presenti amici nelle vicinanze, inviare un promemoria a un utente quando esce dal lavoro o da casa oppure visualizzare buoni acquisto quando l'utente si trova vicino a particolari negozi.

Le funzionalità di recinto virtuale di Windows 8.1 ti permettono di:

  • Creare o rimuovere uno o più recinti virtuali o aree di interesse.

  • Impostare la generazione di una notifica per l'entrata o l'uscita da un recinto virtuale.

  • Abilitare l'esecuzione in background della tua app di recinto virtuale e continuare a ottenere eventi recinto virtuale usando la nuova classe LocationTrigger dell'attività in background.

  • Consentire alla tua app di ricevere aggiornamenti per i recinti virtuali anche nella schermata di blocco.

Lo spazio dei nomi Windows.Devices.Geolocation.Geofencing contiene le classi necessarie per il recinto virtuale. In termini generali, si tratta di creare uno o più oggetti Geofence che definiscono le aree di interesse e le condizioni di notifica. La tua app deve quindi gestire gli eventi che si verificano quando il dispositivo entra in una delle aree definite o ne esce. Puoi quindi testare l'app tramite un simulatore per simulare gli spostamenti all'interno e all'esterno del recinto virtuale.

Supporto di Wi-Fi Direct

[Accedi all'esempio di dispositivo Wi-Fi Direct ora.]

Puoi usare la nuova classe WiFiDirectDevice per enumerare un elenco di dispositivi Wi-Fi Direct che si trovano a portata di connessione wireless. Questi dispositivi vengono associati al tuo PC tramite "Aggiungi un dispositivo" nella sezione Dispositivi delle impostazioni utente. La tua app può quindi creare una connessione al socket di rete con qualsiasi dispositivo Wi-Fi Direct che si trova nel campo. Wi-Fi Direct è una nuova funzionalità che consente la connessione facile tra dispositivi Wi-Fi senza che sia necessario un punto di accesso wireless. È una scelta ideale per la condivisione di elementi multimediali o per giochi connessi ad alte prestazioni. Per altre informazioni, vedi lo spazio dei nomi Windows.Devices.WifiDirect nell'API di Windows Runtime.

Nota  Devi abilitare la funzionalità di prossimità nel file manifesto dell'app per poter usare l'API Wi-Fi Direct.

 

 

Mostra:
© 2014 Microsoft