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.
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();