Ricerca…


Memorizzazione nella cache con Akavache

Informazioni su Akavache

Akavache è una libreria incredibilmente utile che fornisce funzionalità di copertura per la memorizzazione nella cache dei dati. Akavache fornisce un'interfaccia di archiviazione a valore chiave e funziona sulla parte superiore di SQLite3. Non è necessario mantenere sincronizzati gli schemi poiché è in realtà una soluzione No-SQL che lo rende perfetto per la maggior parte delle applicazioni mobili, specialmente se è necessario aggiornare l'app spesso senza perdita di dati.

Raccomandazioni per Xamarin

Akavache è sicuramente la migliore libreria di caching per l'applicazione Xamarin se solo tu non hai bisogno di operare con dati fortemente relativi, quantità binarie o veramente grandi di dati. Utilizzare Akavache nei seguenti casi:

  • È necessario che l'app memorizzi nella cache i dati per un determinato periodo di tempo (è possibile configurare il timeout di scadenza per ciascuna entità che viene salvata;
  • Vuoi che la tua app funzioni offline;
  • È difficile determinare e congelare lo schema dei dati. Ad esempio, hai elenchi contenenti diversi oggetti tipizzati;
  • È sufficiente avere un accesso semplice ai valori-chiave per i dati e non è necessario creare query complesse.

Akavache non è un "punto d'argento" per l'archiviazione dei dati, quindi pensaci due volte a usarlo nei seguenti casi:

  • Le tue entità di dati hanno molte relazioni tra loro;
  • Non hai davvero bisogno che la tua app funzioni offline;
  • Hai un'enorme quantità di dati da salvare localmente;
  • È necessario migrare i dati da una versione all'altra;
  • È necessario eseguire query complesse tipiche per il raggruppamento, le proiezioni, ecc. Di SQL.

In realtà è possibile migrare manualmente i dati semplicemente leggendo e scrivendo di nuovo con i campi aggiornati.

Semplice esempio

Interagire con Akavache avviene principalmente attraverso un oggetto chiamato BlobCache .

La maggior parte dei metodi di Akavache restituisce osservabili reattivi, ma puoi anche solo aspettarli grazie ai metodi di estensione.

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

Gestione degli errori

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow