Szukaj…


Buforowanie przy użyciu Akavache

O Akavache

Akavache to niezwykle przydatna biblioteka zapewniająca bogatą funkcjonalność buforowania danych. Akavache zapewnia interfejs przechowywania klucz-wartość i działa na szczycie SQLite3. Nie musisz synchronizować swojego schematu, ponieważ w rzeczywistości jest to rozwiązanie bez SQL, co czyni go idealnym dla większości aplikacji mobilnych, szczególnie jeśli potrzebujesz często aktualizować aplikację bez utraty danych.

Zalecenia dla Xamarin

Akavache jest zdecydowanie najlepszą biblioteką buforującą dla aplikacji Xamarin, jeśli tylko nie musisz operować silnie względnymi danymi, danymi binarnymi lub naprawdę dużymi ilościami. Użyj Akavache w następujących przypadkach:

  • Potrzebujesz aplikacji do buforowania danych przez określony czas (możesz skonfigurować limit czasu wygaśnięcia dla każdej zapisywanej jednostki;
  • Chcesz, aby Twoja aplikacja działała offline;
  • Trudno jest ustalić i zablokować schemat danych. Na przykład masz listy zawierające różne typy obiektów;
  • Wystarczy mieć prosty dostęp klucz-wartość do danych i nie trzeba wykonywać skomplikowanych zapytań.

Akavache nie jest „srebrną kulą” do przechowywania danych, więc zastanów się dwa razy nad użyciem go w następujących przypadkach:

  • Twoje podmioty danych mają między sobą wiele relacji;
  • Tak naprawdę nie potrzebujesz swojej aplikacji do pracy offline;
  • Masz ogromną ilość danych do zapisania lokalnie;
  • Musisz przeprowadzić migrację danych z wersji do wersji;
  • Musisz wykonywać złożone zapytania typowe dla SQL, takie jak grupowanie, prognozy itp.

W rzeczywistości możesz ręcznie migrować swoje dane, po prostu czytając i zapisując je z zaktualizowanymi polami.

Prosty przykład

Interakcja z Akavache odbywa się przede wszystkim poprzez obiekt o nazwie BlobCache .

Większość metod Akavache zwraca reaktywne obserwowalne, ale możesz też po prostu na nie poczekać dzięki metodom rozszerzenia.

using System.Reactive.Linq;   // IMPORTANT - this makes await work!

// Make sure you set the application name before doing any inserts or gets
BlobCache.ApplicationName = "AkavacheExperiment";

var myToaster = new Toaster();
await BlobCache.UserAccount.InsertObject("toaster", myToaster);

//
// ...later, in another part of town...
//

// Using async/await
var toaster = await BlobCache.UserAccount.GetObject<Toaster>("toaster");

// or without async/await
Toaster toaster;

BlobCache.UserAccount.GetObject<Toaster>("toaster")
    .Subscribe(x => toaster = x, ex => Console.WriteLine("No Key!"));

Obsługa błędów

Toaster toaster;

try {
    toaster = await BlobCache.UserAccount.GetObjectAsync("toaster");
} catch (KeyNotFoundException ex) {
    toaster = new Toaster();
}

// Or without async/await:
toaster = await BlobCache.UserAccount.GetObjectAsync<Toaster>("toaster")
    .Catch(Observable.Return(new Toaster()));


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow