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:

İ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.

  1. Evrensel Windows Platformu için SQLite çalışma zamanını yükleyin.

  2. 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.

  3. Çö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.

    SQLite UWP başvurusu ekleme

  4. MainPage.xaml.cs dosyasını açın ve tanımın #define OFFLINE_SYNC_ENABLED açıklamasını kaldırın.

  5. 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.

  1. 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.

  2. 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.

  3. 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.

  4. Oluşturduğunuz yeni öğelerin yerel depoda kalıcı olduğunu doğrulamak için uygulamayı kapatın ve yeniden başlatın.

  5. (İ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.

  6. (İsteğe bağlı) Biçiminde https://<your-mobile-app-backend-name>.azurewebsites.net/tables/TodoItembir 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.

  1. 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.

  2. 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.

  3. (İ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.

  4. 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ılar SyncAsync . 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: