Inviare richieste batch

Ogni connessione HTTP effettuata dall'applicazione comporta un certo overhead. Questa libreria supporta il raggruppamento, per consentire alla tua applicazione di inserire più chiamate API in un'unica richiesta HTTP. Esempi di situazioni in cui potresti voler utilizzare il raggruppamento:

  • Devi effettuare molte richieste di piccole dimensioni e vorresti ridurre al minimo l'overhead delle richieste HTTP.
  • Un utente ha apportato modifiche ai dati mentre la tua applicazione era offline quindi l'applicazione deve sincronizzare i dati locali con il server inviando molti aggiornamenti ed eliminazioni.

Nota: puoi effettuare al massimo 1000 chiamate in una singola richiesta batch. Se devi effettuare più chiamate, utilizza più richieste collettive.

Nota: non puoi utilizzare un oggetto caricamento di contenuti multimediali in una richiesta batch.

Dettagli

Per creare richieste collettive, esegui l'inizializzazione di un oggetto BatchRequest e poi chiama il metodo Queue per ogni richiesta che vuoi eseguire. Con ogni richiesta, passa un callback da chiamare quando l'applicazione riceve la risposta alla richiesta. Gli argomenti della funzione di callback sono:

contenuti
La risposta ai contenuti o null se la richiesta non è andata a buon fine.
errore
L'errore o null se la richiesta è andata a buon fine.
indice
L'indice della singola richiesta.
messaggio
Il messaggio HTTP completo, che include tutte le intestazioni e i contenuti.
Dopo aver aggiunto le richieste, chiama il metodo ExecuteAsync per inviarle.

Nel seguente snippet di codice, due richieste API vengono raggruppate in una singola richiesta HTTP, a ogni richiesta API viene fornito un callback:

UserCredential credential;
using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
{
    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets,
        new[] { CalendarService.Scope.Calendar },
        "user", CancellationToken.None, new FileDataStore("Calendar.Sample.Store"));
}

// Create the service.
var service = new CalendarService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = "Google Calendar API Sample",
    });

// Create a batch request.
var request = new BatchRequest(service);
request.Queue<CalendarList>(service.CalendarList.List(),
     (content, error, i, message) =>
     {
         // Put your callback code here.
     });
request.Queue<Event>(service.Events.Insert(
     new Event
     {
         Summary = "Learn how to execute a batch request",
         Start = new EventDateTime() { DateTime = new DateTime(2014, 1, 1, 10, 0, 0) },
         End = new EventDateTime() { DateTime = new DateTime(2014, 1, 1, 12, 0, 0) }
     }, "YOUR_CALENDAR_ID_HERE"),
     (content, error, i, message) =>
     {
         // Put your callback code here.
     });
// You can add more Queue calls here.

// Execute the batch request, which includes the 2 requests above.
await request.ExecuteAsync();