Windows uygulamanız için çevrimdışı eşitlemeyi etkinleştirme
Genel Bakış
Bu öğreticide, Azure Mobile App arka ucu kullanarak bir Evrensel Windows Platformu (UWP) uygulamasına çevrimdışı desteğin nasıl ekleneceği gösterilmektedir. Çevrimdışı eşitleme, son kullanıcıların ağ bağlantısı olmadığında bile verileri görüntüleme, ekleme veya değiştirme gibi bir mobil uygulamayla etkileşim kurmasına olanak tanır. Değişiklikler yerel veritabanında depolanır. Cihaz yeniden çevrimiçi olduğunda, bu değişiklikler uzak arka uçla eşitlenir.
Bu öğreticide, Azure Mobile Apps'in çevrimdışı özelliklerini desteklemek için Windows uygulaması oluşturma öğreticisinden UWP uygulama projesini güncelleştirin. İndirilen hızlı başlangıç sunucusu projesini kullanmıyorsanız, veri erişim uzantısı paketlerini projenize eklemeniz gerekir. Sunucu uzantısı paketleri hakkında daha fazla bilgi için bkz . Azure Mobile Apps için .NET arka uç sunucu SDK'sı ile çalışma.
Çevrimdışı eşitleme özelliği hakkında daha fazla bilgi edinmek için Azure Mobile Apps'te Çevrimdışı Veri Eşitleme konusuna bakın.
Gereksinimler
Bu öğretici aşağıdaki önkoşulları gerektirir:
- Windows 8.1 veya sonraki sürümlerde çalışan Visual Studio 2013.
- Windows uygulaması oluşturma işlemi tamamlandı.
- Azure Mobile Services SQLite Store
- Evrensel Windows Platformu geliştirme için SQLite
İstemci uygulamasını çevrimdışı özellikleri destekleyecek şekilde güncelleştirme
Azure Mobile App çevrimdışı özellikleri, çevrimdışı bir senaryodayken yerel veritabanıyla etkileşim kurmanızı sağlar. Bu özellikleri uygulamanızda kullanmak için yerel bir depoya SyncContext başlatırsınız. Ardından IMobileServiceSyncTable arabirimi aracılığıyla tablonuza başvurun. SQLite, cihazda yerel depo olarak kullanılır.
Evrensel Windows Platformu için SQLite çalışma zamanını yükleyin.
Visual Studio'da, Windows uygulaması oluşturma öğreticisinde tamamladığınız UWP uygulama projesi için NuGet paket yöneticisini açın. Microsoft.Azure.Mobile.Client.SQLiteStore NuGet paketini arayın ve yükleyin.
Çözüm Gezgini'da Başvurular>Başvuru Ekle... seçeneğine sağ tıklayın.>Evrensel Pencereler>Uzantılar, ardından Evrensel Windows Platformu için SQLite ve Evrensel Windows Platformuuygulamalar için Visual C++ 2015 Çalışma Zamanı'nı etkinleştirin.
MainPage.xaml.cs dosyasını açın ve tanımın
#define OFFLINE_SYNC_ENABLED
açıklamasını kaldırın.Visual Studio'da F5 tuşuna basarak istemci uygulamasını yeniden derleyin ve çalıştırın. Uygulama, çevrimdışı eşitlemeyi etkinleştirmeden öncekiyle aynı şekilde çalışır. Ancak, yerel veritabanı artık çevrimdışı bir senaryoda kullanılabilecek verilerle doldurulur.
Arka uç bağlantısını kesmek için uygulamayı güncelleştirme
Bu bölümde, çevrimdışı bir durumun benzetimini yapmak için Mobil Uygulama arka ucunuzun bağlantısını keseceksiniz. Veri öğeleri eklediğinizde, özel durum işleyiciniz uygulamanın çevrimdışı modda olduğunu bildirir. Bu durumda, yerel depoya yeni öğeler eklenir ve gönderim bir sonraki bağlı durumda çalıştırıldığında mobil uygulama arka ucuyla eşitlenir.
Paylaşılan projede App.xaml.cs dosyasını düzenleyin. MobileServiceClient'ın başlatılmasını açıklama satırı yapın ve geçersiz bir mobil uygulama URL'si kullanan aşağıdaki satırı ekleyin:
public static MobileServiceClient MobileService = new MobileServiceClient("https://your-service.azurewebsites.fail");
Cihazda wifi ve hücresel ağları devre dışı bırakarak veya uçak modunu kullanarak çevrimdışı davranışı da gösterebilirsiniz.
Uygulamayı derlemek ve çalıştırmak için F5 tuşuna basın. Uygulama başlatıldığında eşitlemenizin yenilemede başarısız olduğunu fark edin.
Yeni öğeler girin ve Kaydet'e her tıkladığınızda gönderimin CancelledByNetworkError durumuyla başarısız olduğuna dikkat edin. Ancak, yeni yapılacaklar öğeleri mobil uygulama arka ucuna gönderilinceye kadar yerel mağazada bulunur. Bir üretim uygulamasında, bu özel durumları gizlerseniz istemci uygulaması hala mobil uygulama arka ucuna bağlı gibi davranır.
Oluşturduğunuz yeni öğelerin yerel depoda kalıcı olduğunu doğrulamak için uygulamayı kapatın ve yeniden başlatın.
(İsteğe bağlı) Visual Studio'da Sunucu Gezgini'ne gidin. Azure-SQL>Veritabanları'nda veritabanınıza gidin. Veritabanınıza sağ tıklayın ve SQL Server Nesne Gezgini'da aç'ı seçin. Artık SQL veritabanı tablonuza ve içindekilere göz atabilirsiniz. Arka uç veritabanındaki verilerin değişmediğini doğrulayın.
(İsteğe bağlı) Biçiminde
https://<your-mobile-app-backend-name>.azurewebsites.net/tables/TodoItem
bir GET sorgusu kullanarak mobil arka ucunuzu sorgulamak için Fiddler veya Postman gibi bir REST aracı kullanın.
Mobil Uygulama arka ucunuzu yeniden bağlamak için uygulamayı güncelleştirme
Bu bölümde, uygulamayı mobil uygulama arka ucuna yeniden bağlayacaksınız. Bu değişiklikler uygulamada bir ağ yeniden bağlantısının benzetimini oluşturur.
Uygulamayı ilk kez çalıştırdığınızda OnNavigatedTo
, olay işleyicisi öğesini çağırır InitLocalStoreAsync
. Bu yöntem de yerel deponuzu arka uç veritabanıyla eşitlemek için çağrılar SyncAsync
. Uygulama başlangıçta eşitlemeyi dener.
Paylaşılan projede App.xaml.cs dosyasını açın ve doğru mobil uygulama URL'sini kullanmak için önceki başlatmanızın
MobileServiceClient
açıklamasını kaldırın.Uygulamayı yeniden derlemek ve çalıştırmak için F5 tuşuna basın. Uygulama, olay işleyicisi yürütürken
OnNavigatedTo
gönderme ve çekme işlemlerini kullanarak yerel değişikliklerinizi Azure Mobile App arka ucuyla eşitler.(İsteğe bağlı) SQL Server Nesne Gezgini veya Fiddler gibi bir REST aracı kullanarak güncelleştirilmiş verileri görüntüleyin. Verilerin Azure Mobile App arka uç veritabanı ile yerel depo arasında eşitlendiğine dikkat edin.
Uygulamada, yerel mağazada tamamlamak için birkaç öğenin yanındaki onay kutusuna tıklayın.
UpdateCheckedTodoItem
tamamlanan her öğeyi Mobil Uygulama arka ucuyla eşitlemek için çağrılarSyncAsync
.SyncAsync
hem gönderme hem de çekme çağrısında bulunur. Ancak, istemcinin değişiklik yaptığı bir tabloda çekme işlemi yürüttüğünde, gönderme işlemi her zaman otomatik olarak yürütülür. Bu davranış, yerel depodaki tüm tabloların ve ilişkilerin tutarlı kalmasını sağlar. Bu davranış beklenmeyen bir göndermeye neden olabilir. Bu davranış hakkında daha fazla bilgi için bkz. Azure Mobile Apps'te Çevrimdışı Veri Eşitleme.
API Özeti
Mobil hizmetlerin çevrimdışı özelliklerini desteklemek için IMobileServiceSyncTable arabirimini kullandık ve yerel bir SQLite veritabanıyla MobileServiceClient.SyncContext'i başlatmış olduk. Çevrimdışı olduğunda, Mobile Apps için normal CRUD işlemleri, yerel depoda işlemler gerçekleşirken uygulama hala bağlı gibi çalışır. Yerel depoyu sunucuyla eşitlemek için aşağıdaki yöntemler kullanılır:
- PushAsync Bu yöntem IMobileServicesSyncContext'in bir üyesi olduğundan, tüm tablolardaki değişiklikler arka uçtan gönderilir. Yalnızca yerel değişiklikleri olan kayıtlar sunucuya gönderilir.
- PullAsyncIMobileServiceSyncTable'dan çekme işlemi başlatılır. Tabloda izlenen değişiklikler olduğunda, yerel depodaki tüm tabloların ve ilişkilerin tutarlı kalmasını sağlamak için örtük bir gönderme çalıştırılır. pushOtherTables parametresi, bağlamdaki diğer tabloların örtük bir göndermede gönderilip gönderilmediğini denetler. Sorgu parametresi, döndürülen verileri filtrelemek için bir IMobileServiceTableQuery<T> veya OData sorgu dizesi alır. queryId parametresi artımlı eşitlemeyi tanımlamak için kullanılır. Daha fazla bilgi için bkz. Azure Mobile Apps'te Çevrimdışı Veri Eşitleme.
- PurgeAsync Uygulamanız, eski verileri yerel depodan temizlemek için düzenli aralıklarla bu yöntemi çağırmalıdır. Henüz eşitlenmemiş değişiklikleri temizlemeniz gerektiğinde force parametresini kullanın.
Bu kavramlar hakkında daha fazla bilgi için bkz. Azure Mobile Apps'te Çevrimdışı Veri Eşitleme.
Daha fazla bilgi
Aşağıdaki konular, Mobile Apps'in çevrimdışı eşitleme özelliği hakkında ek arka plan bilgileri sağlar: