Mengaktifkan sinkronisasi offline untuk aplikasi Windows Anda

Gambaran Umum

Tutorial ini menunjukkan kepada Anda cara menambahkan dukungan offline ke aplikasi Universal Windows Platform (UWP) menggunakan backend Azure Mobile App. Sinkronisasi offline memungkinkan pengguna akhir berinteraksi dengan aplikasi seluler--menampilkan, menambahkan, atau memodifikasi data - bahkan ketika tidak ada koneksi jaringan. Perubahan disimpan di dalam database lokal. Setelah perangkat kembali online, perubahan ini disinkronkan dengan backend jarak jauh.

Dalam tutorial ini, Anda memperbarui proyek aplikasi UWP dari tutorial Membuat aplikasi Windows untuk mendukung fitur offline Azure Mobile Apps. Jika Anda tidak menggunakan proyek server mulai cepat yang diunduh, Anda harus menambahkan paket ekstensi akses data ke proyek Anda. Untuk informasi selengkapnya tentang paket ekstensi server, lihat Bekerja dengan SDK server backend .NET untuk Azure Mobile Apps.

Untuk mempelajari selengkapnya mengenai fitur sinkronisasi offline, lihat topik Sinkronisasi Data Offline di Azure Mobile Apps.

Persyaratan

Tutorial ini memerlukan prasyarat berikut:

Memperbarui aplikasi klien untuk mendukung fitur offline

Fitur offline Azure Mobile App memungkinkan Anda berinteraksi dengan database lokal saat Anda berada dalam skenario offline. Untuk menggunakan fitur ini di aplikasi, Anda menginisialisasi SyncContext ke penyimpanan lokal. Kemudian referensikan tabel Anda melalui antarmuka IMobileServiceSyncTable . SQLite digunakan sebagai penyimpanan lokal pada perangkat.

  1. Instal runtime SQLite untuk Universal Windows Platform.

  2. Di Visual Studio, buka manajer paket NuGet untuk proyek aplikasi UWP yang Anda selesaikan dalam tutorial Membuat aplikasi Windows . Cari dan instal paket NuGet Microsoft.Azure.Mobile.Client.SQLiteStore .

  3. Di Penjelajah Solusi, klik kanan Referensi>Tambahkan Referensi...>Universal Windows>Ekstensi, lalu aktifkan SQLite untuk Universal Windows Platform dan Visual C++ 2015 Runtime untuk aplikasi Universal Windows Platform.

    Menambahkan referensi SQLite UWP

  4. Buka file MainPage.xaml.cs dan batalkan #define OFFLINE_SYNC_ENABLED komentar definisi.

  5. Di Visual Studio, tekan tombol F5 untuk membangun kembali dan menjalankan aplikasi klien. Aplikasi ini berfungsi sama seperti sebelum Anda mengaktifkan sinkronisasi offline. Namun, database lokal sekarang diisi dengan data yang dapat digunakan dalam skenario offline.

Memperbarui aplikasi untuk memutuskan sambungan dari backend

Di bagian ini, Anda memutuskan koneksi ke backend Mobile App Anda untuk mensimulasikan situasi offline. Saat Anda menambahkan item data, handler pengecualian memberi tahu Anda bahwa aplikasi dalam mode offline. Dalam status ini, item baru ditambahkan di penyimpanan lokal dan akan disinkronkan ke backend aplikasi seluler saat pendorongan dijalankan berikutnya dalam keadaan tersambung.

  1. Edit App.xaml.cs di proyek bersama. Komentari inisialisasi MobileServiceClient dan tambahkan baris berikut, yang menggunakan URL aplikasi seluler yang tidak valid:

      public static MobileServiceClient MobileService = new MobileServiceClient("https://your-service.azurewebsites.fail");
    

    Anda juga dapat menunjukkan perilaku offline dengan menonaktifkan wifi dan jaringan seluler pada perangkat atau menggunakan mode pesawat.

  2. Tekan F5 untuk membuat dan menjalankan aplikasi. Perhatikan bahwa sinkronisasi Anda gagal saat refresh saat aplikasi diluncurkan.

  3. Masukkan item baru dan perhatikan bahwa pendorongan gagal dengan status CancelledByNetworkError setiap kali Anda mengklik Simpan. Namun, item tugas baru ada di penyimpanan lokal sampai dapat didorong ke backend aplikasi seluler. Dalam aplikasi produksi, jika Anda menekan pengecualian ini, aplikasi klien berakibat seolah-olah masih terhubung ke backend aplikasi seluler.

  4. Tutup aplikasi dan mulai ulang untuk memverifikasi bahwa item baru yang Anda buat tetap ada di penyimpanan lokal.

  5. (Opsional) Di Visual Studio, buka Server Explorer. Navigasikan ke database Anda di Azure-SQL> Database. Klik kanan database Anda dan pilih Buka di SQL Server Object Explorer. Sekarang Anda dapat menelusuri ke tabel database SQL Anda dan kontennya. Verifikasi bahwa data dalam database backend tidak berubah.

  6. (Opsional) Gunakan alat REST seperti Fiddler atau Postman untuk mengkueri backend seluler Anda, menggunakan kueri GET dalam formulir https://<your-mobile-app-backend-name>.azurewebsites.net/tables/TodoItem.

Perbarui aplikasi untuk menyambungkan kembali backend Aplikasi Seluler Anda

Di bagian ini, Anda menyambungkan kembali aplikasi ke backend aplikasi seluler. Perubahan ini mensimulasikan koneksi ulang jaringan pada aplikasi.

Ketika Anda pertama kali menjalankan aplikasi, penanganan OnNavigatedTo aktivitas memanggil InitLocalStoreAsync. Metode ini pada gilirannya memanggil SyncAsync untuk menyinkronkan penyimpanan lokal Anda dengan database backend. Aplikasi ini mencoba menyinkronkan saat startup.

  1. Buka App.xaml.cs di proyek bersama, dan batalkan komentar inisialisasi MobileServiceClient Anda sebelumnya untuk menggunakan URL aplikasi seluler yang benar.

  2. Tekan tombol F5 untuk membangun kembali dan menjalankan aplikasi. Aplikasi ini menyinkronkan perubahan lokal Anda dengan backend Azure Mobile App menggunakan operasi pendorongan dan penarikan saat OnNavigatedTo penanganan aktivitas dijalankan.

  3. (Opsional) Lihat data yang diperbarui menggunakan SQL Server Object Explorer atau alat REST seperti Fiddler. Perhatikan bahwa data telah disinkronkan antara database backend Azure Mobile App dan penyimpanan lokal.

  4. Di aplikasi, klik kotak centang di samping beberapa item untuk menyelesaikannya di penyimpanan lokal.

    UpdateCheckedTodoItemSyncAsync panggilan untuk menyinkronkan setiap item yang diselesaikan dengan backend Aplikasi Seluler. SyncAsync memanggil pendorongan dan penarikan. Namun, setiap kali Anda menjalankan penarikan terhadap tabel yang telah diubah klien, dorongan selalu dijalankan secara otomatis. Perilaku ini memastikan semua tabel di penyimpanan lokal bersama dengan hubungan tetap konsisten. Perilaku ini dapat mengakibatkan dorongan yang tidak terduga. Untuk informasi selengkapnya tentang perilaku ini, lihat Sinkronisasi Data Offline di Azure Mobile Apps.

Ringkasan API

Untuk mendukung fitur offline layanan seluler, kami menggunakan antarmuka IMobileServiceSyncTable dan menginisialisasi MobileServiceClient.SyncContext dengan database SQLite lokal. Saat offline, operasi CRUD normal untuk Mobile Apps berfungsi seolah-olah aplikasi masih terhubung saat operasi terjadi terhadap penyimpanan lokal. Metode berikut digunakan untuk menyinkronkan penyimpanan lokal dengan server:

  • PushAsync Karena metode ini adalah anggota IMobileServicesSyncContext, perubahan di semua tabel didorong ke backend. Hanya rekaman dengan perubahan lokal yang dikirim ke server.
  • PullAsync Penarikan dimulai dari IMobileServiceSyncTable. Ketika ada perubahan terlacak dalam tabel, dorongan implisit dijalankan untuk memastikan bahwa semua tabel di penyimpanan lokal bersama dengan hubungan tetap konsisten. Parameter pushOtherTables mengontrol apakah tabel lain dalam konteks didorong dalam dorongan implisit. Parameter kueri mengambil string kueri IMobileServiceTableQuery<T> atau OData untuk memfilter data yang dikembalikan. Parameter queryId digunakan untuk menentukan sinkronisasi inkremental. Untuk informasi selengkapnya, lihat Sinkronisasi Data Offline di Azure Mobile Apps.
  • PurgeAsync Aplikasi Anda harus secara berkala memanggil metode ini untuk menghapus menyeluruh data kedaluarsa dari penyimpanan lokal. Gunakan parameter paksa saat Anda perlu menghapus menyeluruh perubahan apa pun yang belum disinkronkan.

Untuk informasi selengkapnya tentang konsep ini, lihat Sinkronisasi Data Offline di Azure Mobile Apps.

Info selengkapnya

Topik berikut ini menyediakan informasi latar belakang tambahan tentang fitur sinkronisasi offline Mobile Apps: