Porovnání možností úložiště

Dokončeno

.NET MAUI poskytuje několik možností úložiště pro ukládání dat do mezipaměti místně na zařízení v závislosti na povaze, struktuře a velikosti dat. Mezi tři nejčastěji používané možnosti pro místní ukládání dat v aplikaci .NET MAUI patří:

  • Předvolby: Ukládá data v párech klíč-hodnota.
  • Systém souborů: Ukládá volné soubory přímo do zařízení prostřednictvím přístupu k systému souborů.
  • Databáze: Ukládá data v relační databázi.

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

V této lekci se podíváte na tyto možnosti úložiště a na situace, pro které je každá možnost nejvhodnější.

Kdy použít předvolby

Předvolby jsou pohodlné, když pracujete s jednoduchými částmi dat, jako jsou výběry uživatelů. Často se používají k tomu, aby uživatelé mohli aplikaci nakonfigurovat. Tato data uložíte jako sadu párů klíč/hodnota. Předpokládejme například, že chcete, aby uživatel mohl určit, jestli má aplikace uložit svoje uživatelské jméno a heslo mezi relací. Výběr uživatele můžete uložit v předvolbách.

Následující kód ukazuje, jak uložit logickou hodnotu zaznamenanou v saveLoginDetails proměnné do předvolby s názvem SaveLogina pak později přečíst tato data zpět. Všimněte si, že metoda očekává, že Get zadáte výchozí hodnotu, pokud se zadaná předvolba nenajde:

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

Třída Preferences také obsahuje metody pro určení, zda pojmenovaná předvolba existuje (ContainsKey), odstranění předvolby (Remove) a odebrání všech dat předvoleb (Clear).

Poznámka:

Jako předvolby byste měli ukládat jenom jednoduché datové typy. Nelze ukládat odkazy na velké objekty, jako jsou seznamy, kolekce a pole. Pro tento typ dat použijte systém souborů nebo databázi.

Kdy použít systém souborů

Mobilní a desktopová zařízení mají systém souborů s hierarchickou adresářovou strukturou složek a souborů. Systém souborů je vhodný, když máte volné soubory, jako jsou XML, binární nebo textové soubory. Předpokládejme například, že chcete ukládat data protokolů místně na zařízení. Můžete vytvořit textový soubor, uložit ho do systému souborů a zapsat do něj protokoly, jak se to stane. Můžete také serializovat velké datové struktury do souboru a ukládat je místně do mezipaměti v systému souborů, pokud potřebujete uložit, když se aplikace vypne. Když se aplikace restartuje, můžete tato data znovu přečíst do paměti. Následující kód ukazuje příklady serializace dat do souboru a uložení tohoto souboru a následné čtení dat zpět a deserializace zpět do paměti později. V této části používáme JSON pro serializační formát, ale data můžete uložit v libovolném formátu, který považujete za nejvhodnější pro povahu dat a požadavky na zabezpečení aplikace.

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);

Přístup k sandboxu aplikace

Když pracujete s volnými soubory, musíte je uložit do vhodného umístění v systému souborů. Některá z těchto dat můžou být citlivá a nechcete je ukládat do umístění, kde k němu můžou snadno přistupovat jiné aplikace nebo uživatelé. Aplikace .NET MAUI poskytují sandbox aplikace. Sandbox aplikace je soukromá oblast, se kterou může vaše aplikace fungovat. Ve výchozím nastavení nemají k této oblasti přístup žádné jiné aplikace než operační systém. K sandboxu se dostanete pomocí AppDataDirectory statické vlastnosti FileSystem třídy:

string path = FileSystem.AppDataDirectory;

V tomto kódu obsahuje proměnná cestu k souboru do umístění, path kam můžete ukládat soubory, které má aplikace používat. Data můžete číst a zapisovat do souborů v této složce pomocí technik zobrazených v části Kdy použít systém souborů.

Poznámka:

Vlastnost FileSystem.AppDataDirectory je abstrakcí cesty specifické pro zařízení. Vyhodnotí se v různých složkách v Androidu, iOSu a WinUI3. Tato abstrakce umožňuje napsat kód, který odkazuje na sandbox způsobem, který je nezávislý na platformě, na které běží. Tuto abstrakci použijte místo explicitního odkazu na cestu specifickou pro zařízení ve vašem kódu.

Pokyny pro ukládání dat v aplikacích pro iOS

Apple má pokyny pro iOS, kde se mají ukládat soubory. Existují dvě hlavní umístění složek:

  • Složka Knihovna : Tato složka je vrácena FileSystem.AppDataDirectory vlastností, jak je popsáno výše. Složku Knihovna použijte při ukládání dat generovaných aplikací.

  • Složka Dokumenty: Následující fragment kódu ukazuje, jak odkazovat na tuto složku v docFolder proměnné. Složka Dokumenty slouží k ukládání pouze uživatelem generovaných dat. Tato data se vytvoří v přímé reakci na akci uživatele. Pokud jste například vytvořili aplikaci pro úpravy textu, například Microsoft Word, uložili byste dokument do složky Dokumenty.

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

Kdy použít databázi

Je vhodné použít místní databázi, pokud máte relace mezi daty nebo když chcete data v průběhu času filtrovat. Příklad: Ve scénáři sociálních médií obsahuje každý příspěvek data o příspěvku, například časové razítko a obsah. Každý příspěvek má ale také vztah k uživateli, který příspěvek vytvořil. Tento vztah v databázi představuje, aby se zabránilo duplikování dat mezi příspěvky, a také ke zlepšení efektivity vyhledávání dat.

Databáze SQLite je soubor a musíte ji uložit na příslušném místě. V ideálním případě byste měli vytvořit složku ve AppDataDirectory složce v sandboxu a vytvořit databázi v této složce.

1.

Předpokládejme, že vytváříte aplikaci .NET MAUI pro iOS, která uživatelům umožňuje vytvářet hudbu. Chcete, aby uživatelé mohli svoji práci uložit do souboru, aby mohli aplikaci restartovat a pokračovat v práci tam, kde skončili. V sandboxu aplikace pro iOS do které složky byste tento soubor uložili?

2.

Předpokládejme, že chcete uložit malou část dat, aby byla přístupná mezi spuštěními aplikace. Která možnost úložiště dat je nejvhodnější?

Kontrola odpovědí