Toplu İstek Gönderme

Uygulamanızın oluşturduğu her HTTP bağlantısı belirli miktarda ek yük oluşturur. Bu kitaplık toplu işlemeyi destekler, kullanın. Gruplandırmayı kullanmak isteyebileceğiniz durumlara örnekler:

  • Göndermeniz gereken çok sayıda küçük isteğiniz var ve HTTP isteklerinin ek yükünü en aza indirmek istiyorsunuz.
  • Bir kullanıcı, uygulamanız çevrimdışıyken verilerde değişiklik yaptı. Bu nedenle uygulamanızın, yerel verilerini sunucuyla senkronize etmesi gerekir çok sayıda güncelleme ve silme göndererek.

Not: Tek bir toplu istekte en fazla 1.000 arama yapabilirsiniz. Bundan daha fazla çağrı yapmanız gerekiyorsa birden çok toplu istek kullanın.

Not: Toplu isteklerde medya yükleme nesnesi kullanamazsınız.

Ayrıntılar

Örnek oluşturarak toplu istekler oluşturursunuz. BatchRequest nesnesini ifade edin ve ardından, yürütmek istediğiniz her istek için Queue yöntemini çağırın. Her istekle birlikte, uygulamanız yanıt vermesi gerekir. Geri çağırma işlevinin bağımsız değişkenleri şunlardır:

içerik
İçerik yanıtı veya istek başarısız olduysa null.
hata
Hata veya istek başarılı olduysa null.
indeks
İsteğin dizini.
mesaj
Tüm üstbilgilerini ve içeriğini içeren tam HTTP mesajı.
İstekleri ekledikten sonra, istek yapmak için ExecuteAsync yöntemini çağırırsınız.

Aşağıdaki kod snippet'inde, iki API isteği tek bir HTTP isteğinde gruplandırılmıştır ve her API isteğine bir geri çağırma işlevi sağlanmıştır:

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