Envía solicitudes por lotes

Cada conexión HTTP que realiza tu aplicación da como resultado una cierta cantidad de sobrecarga. Esta biblioteca admite el procesamiento por lotes, para permitir que tu aplicación coloque varias llamadas a la API en una sola solicitud HTTP. A continuación, se detallan algunos ejemplos de situaciones en las que te sería útil usar el procesamiento por lotes:

  • Tienes que realizar muchas solicitudes pequeñas y te gustaría minimizar la sobrecarga de las solicitudes HTTP.
  • Un usuario realizó cambios en datos mientras la aplicación estaba sin conexión. por lo que tu app necesita sincronizar sus datos locales con el servidor con muchas actualizaciones y eliminaciones.

Nota: Hay un límite de 1,000 llamadas en una sola solicitud por lotes. Si necesitas hacer más llamadas, usa varias solicitudes por lotes.

Nota: No puedes usar un carga de contenido multimedia objeto de una solicitud por lotes.

Detalles

Puedes crear solicitudes por lotes con la creación de una instancia BatchRequest y, luego, llama al método Queue para cada solicitud que quieras ejecutar. Con cada solicitud, pasa una devolución de llamada para que se la llame cuando la aplicación reciba la respuesta a esa solicitud. Los argumentos de la función de devolución de llamada son los siguientes:

contenido
La respuesta de contenido, o null si la solicitud falló.
error
El error, o null si la solicitud se realizó correctamente.
index
El índice de la solicitud individual.
mensaje
Es el mensaje HTTP completo que incluye todo su contenido y encabezados.
Después de agregar las solicitudes, puedes llamar al ExecuteAsync para realizar las solicitudes

En el siguiente fragmento de código, dos solicitudes a la API se agrupan en lotes en una sola solicitud HTTP y cada solicitud a la API recibe una devolución de llamada:

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