Membandingkan opsi penyimpanan

Selesai

.NET MAUI menyediakan beberapa opsi penyimpanan untuk meng-cache data secara lokal pada perangkat, tergantung pada sifat, struktur, dan ukuran data. Tiga opsi yang paling umum digunakan untuk menyimpan data secara lokal dalam aplikasi .NET MAUI adalah:

  • Preferensi: Menyimpan data dalam pasangan kunci-nilai
  • Sistem file: Menyimpan file longgar langsung di perangkat melalui akses sistem file
  • Database: Menyimpan data dalam database relasional

Diagram of the common local storage options available to a .NET MAUI app.

Di unit ini, Anda akan melihat opsi penyimpanan ini dan situasi di mana setiap opsi paling sesuai.

Kapan harus menggunakan Preferensi

Preferensi nyaman saat Anda bekerja dengan potongan data sederhana seperti pilihan pengguna. Mereka sering digunakan untuk memungkinkan pengguna mengonfigurasi aplikasi. Anda menyimpan data ini sebagai satu set pasangan kunci/nilai. Misalnya, Anda ingin pengguna dapat menentukan apakah aplikasi harus menyimpan nama pengguna dan sandinya di antara sesi. Anda dapat menyimpan pilihan pengguna di Preferensi.

Kode berikut menunjukkan cara menyimpan nilai Boolean yang direkam dalam saveLoginDetails variabel ke preferensi bernama SaveLogin, lalu membaca kembali data ini. Perhatikan bahwa metode Get mengharapkan Anda memberikan nilai default jika preferensi yang ditentukan tidak ditemukan:

bool saveLoginDetails = ...;
...
Preferences.Set("SaveLogin", saveLoginDetails);
...
var savedPreference = Preferences.Get("SaveLogin", false);

Kelas Preferences juga berisi metode untuk menentukan apakah ada preferensi bernama (ContainsKey), menghapus preferensi (Remove), dan menghapus semua data preferensi (Clear).

Catatan

Anda hanya boleh menyimpan tipe data sederhana sebagai preferensi. Anda tidak dapat menyimpan referensi ke objek besar seperti daftar, koleksi, dan larik. Untuk jenis data ini, gunakan sistem file atau database.

Kapan menggunakan sistem file

Perangkat seluler dan desktop memiliki sistem file dengan struktur direktori hierarki folder dan file. Lebih mudah menggunakan sistem file saat Anda memiliki file longgar seperti file XML, biner, atau teks. Misalnya, Anda ingin menyimpan data log secara lokal di perangkat. Anda dapat membuat file teks, menyimpan file ini ke sistem file, dan menulis log ke sana saat peristiwa terjadi. Anda juga dapat membuat cerita bersambung struktur data besar ke file, dan menyimpannya secara lokal di sistem file jika Anda perlu menyimpannya saat aplikasi dimatikan. Saat aplikasi dimulai ulang, Anda dapat membaca ulang data ini kembali ke memori. Kode berikut ini memperlihatkan contoh serialisasi data ke file dan menyimpan file ini, lalu membaca kembali data dan mendeserialisasinya kembali ke memori nanti. Di sini, kami menggunakan JSON untuk format serialisasi, tetapi Anda dapat menyimpan data dalam format apa pun yang Anda rasa paling sesuai dengan sifat data dan persyaratan keamanan aplikasi.

using System.Text.Json;
using System.IO;

// Data to be written to the file system, and read back later
List<Customer> customers = ...;

// Serialize and save
string fileName = ...;
var serializedData = JsonSerializer.Serialize(customers);
File.WriteAllText(fileName, serializedData);
...

// Read and deserialize
var rawData = File.ReadAllText(fileName);
customers = JsonSerializer.Deserialize<List<Customer>>(rawData);

Akses kotak pasir aplikasi

Saat Anda bekerja dengan file longgar seperti file XML, Anda perlu menyimpannya di lokasi yang sesuai dalam sistem file. Beberapa data ini mungkin sensitif, dan Anda tidak ingin menyimpannya ke lokasi di mana aplikasi atau pengguna lain dapat dengan mudah mengaksesnya. Aplikasi .NET MAUI menyediakan kotak pasir aplikasi. Kotak pasir aplikasi adalah area privat tempat aplikasi Anda dapat bekerja. Secara default, tidak ada aplikasi lain yang dapat mengakses area ini selain sistem operasi. Anda dapat mengakses kotak pasir dengan menggunakan AppDataDirectory properti FileSystem statis kelas:

string path = FileSystem.AppDataDirectory;

Dalam kode ini, path variabel berisi jalur file ke lokasi tempat Anda dapat menyimpan file untuk digunakan aplikasi. Anda dapat membaca dan menulis data ke file di folder ini menggunakan teknik yang ditunjukkan di bagian Kapan menggunakan sistem file.

Catatan

Properti FileSystem.AppDataDirectory adalah abstraksi dari jalur khusus perangkat; itu mengevaluasi ke folder yang berbeda di Android, iOS, dan WinUI3. Abstraksi ini memungkinkan Anda menulis kode yang mereferensikan kotak pasir dengan cara yang independen dari platform tempatnya berjalan. Gunakan abstraksi ini daripada mereferensikan jalur khusus perangkat secara eksplisit dalam kode Anda.

Pedoman untuk menyimpan data di aplikasi iOS

Apple memiliki pedoman iOS tentang di mana file harus disimpan. Ada dua lokasi folder utama:

  • Folder Pustaka: Folder ini dikembalikan oleh FileSystem.AppDataDirectory properti , seperti yang dijelaskan sebelumnya. Gunakan folder Pustaka saat Anda menyimpan data yang dihasilkan aplikasi.

  • Folder Dokumen: Cuplikan kode berikut menunjukkan cara mereferensikan folder ini dalam docFolder variabel. Gunakan folder Dokumen untuk menyimpan data yang dihasilkan pengguna saja. Data ini dibuat sebagai respons langsung terhadap tindakan pengguna. Misalnya, jika Anda membuat aplikasi pengeditan teks seperti Microsoft Word, Anda akan menyimpan dokumen di folder Dokumen.

    string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    

Kapan menggunakan database

Ada baiknya menggunakan database lokal saat Anda memiliki hubungan antar data, atau saat Anda ingin memfilter data dari waktu ke waktu. Misalnya: dalam skenario media sosial, setiap postingan berisi data tentang postingan, seperti tanda waktu dan konten. Namun, setiap pos juga memiliki hubungan dengan pengguna yang membuat pos tersebut. Sangat masuk akal untuk mewakili hubungan ini dalam database untuk mencegah duplikasi data antar pos, dan juga untuk meningkatkan efisiensi pencarian data.

Database SQLite adalah file, dan Anda harus menyimpannya di tempat yang sesuai. Idealnya, Anda harus membuat folder di dalam folder AppDataDirectory di kotak pasir dan membuat database di folder ini.

1.

Misalkan Anda sedang membangun aplikasi .NET MAUI untuk iOS yang memungkinkan pengguna untuk membuat musik. Anda ingin pengguna dapat menyimpan pekerjaan mereka ke file sehingga mereka bisa menghidupkan ulang aplikasi dan melanjutkan bekerja di tempat mereka tinggalkan. Di kotak pasir aplikasi iOS, ke folder mana Anda akan menyimpan file ini?

2.

Misalkan Anda ingin menyimpan sebagian kecil data agar mudah diakses di antara peluncuran aplikasi. Opsi penyimpanan data mana yang paling tepat?