2010-10-26 26 views
6

Hem çevrimdışı hem de çevrimdışı çalışan bir iPad uygulamasına sahibim ancak çevrimdışı olduğumda, çevrimiçi kullanılabilirlik bir kez daha seçenek olduğunda bir kez yapılması gereken web servis çağrıları var.mesaj kuyruğu - MSMQ gibi bir şey?

Örnek: Uygulamaya yeni bir istemci ekleniyor, bunun web hizmetine gönderilmesi gerekiyor, ancak çevrimdışı olduğumuzdan, kullanıcıyı yavaşlatmak istemiyoruz, böylece yerel olarak ekleyip izin vermemize izin veriyoruz. Bu aramanın yapabileceğimiz internet servisine yapılması gerektiğini hatırlamak. Emirleri ve benzeri için aynı şey.

Bağlantı kurduğumuzda tetiklenebilecek bir kurulum sırası var mı?

cevap

3

MSMQ gibi ağır vasıtaların genel giderlerinin basit bir işlem için gerekli olduğunu düşünmüyorum. Çekirdek Verileri kullanabilir, yönetilen nesneleri web servisini aramak için gereken verilerle devam ettirebilir ve yalnızca yönetilen her nesneyi başarılı bir gönderiden sonra silebilirsiniz. Bağlantı başladığında bir olayı yakalamanın bir yolu olabilir veya olmayabilir, ancak ilk ileti kuyruğa alındığında tekrarlanan bir NSTimer oluşturabilir ve kuyrukta hiç mesaj olmadığında onu durdurabilirsiniz.

+0

kuyruk kısmı bunu başarmak için nasıl biraz yön arayışında, benim sorudur. işlev çağrılarını nasıl sırayacağınızdan emin değilsiniz. MSMQ'yi örnek olarak kullandım çünkü bunu geçmişte kullandım. – Slee

+0

Size bir sıra nasıl yapacağınızı anlattım. :-) Çekirdek Verileri Kullan. Sipariş edilen herhangi bir koleksiyon etkili bir kuyruktur. Bir tane getir, işle, sil. İşlev çağrılarını sıraya koyabilirsiniz, ancak iş parçacığı, getirdiği verilere dayanarak hangi işlevi çağırmak gerektiğini bildiğinden, muhtemelen gerek yoktur. –

+0

bariz olana benzemeyen hiçbir şey - teşekkürler! – Slee

1

Bu kitaplıkta, anlattığınız gibi durumlar için çevrimdışı kalıcı ileti kuyruğu işler. Bir yıl önce gelen alfa diyor, ama üretim uygulamalarında kullanılır doğruladı:

https://github.com/gcamp/IPOfflineQueue