Xamarin.Forms Mise en cache avec Akavache


Exemple

A propos d'Akavache

Akavache est une bibliothèque incroyablement utile fournissant des fonctionnalités de mise en cache pour la mise en cache de vos données. Akavache fournit une interface de stockage de valeur clé et travaille sur le dessus de SQLite3. Vous n'avez pas besoin de garder votre schéma synchronisé car il ne s'agit en fait que de la solution No-SQL, ce qui le rend parfait pour la plupart des applications mobiles, en particulier si votre application doit être mise à jour souvent sans perte de données.

Recommandations pour Xamarin

Akavache est sans aucun doute la meilleure bibliothèque de mise en cache pour l'application Xamarin si vous n'avez pas besoin d'opérer avec des données fortement relatives, binaires ou de très grandes quantités de données. Utilisez Akavache dans les cas suivants:

  • Vous avez besoin de votre application pour mettre en cache les données pendant une période donnée (vous pouvez configurer le délai d'expiration pour chaque entité enregistrée;
  • Vous voulez que votre application fonctionne hors connexion;
  • Il est difficile de déterminer et de geler le schéma de vos données. Par exemple, vous avez des listes contenant différents objets typés;
  • Il suffit que vous ayez un accès simple à la valeur-clé aux données et que vous n'ayez pas besoin de faire des requêtes complexes.

Akavache n'est pas une "solution miracle" pour le stockage des données, alors réfléchissez bien à son utilisation dans les cas suivants:

  • Vos entités de données ont de nombreuses relations entre elles;
  • Vous n'avez pas vraiment besoin que votre application fonctionne hors ligne;
  • Vous avez une énorme quantité de données à enregistrer localement;
  • Vous devez migrer vos données de version en version;
  • Vous devez effectuer des requêtes complexes typiques pour SQL, comme le regroupement, les projections, etc.

En fait, vous pouvez migrer manuellement vos données simplement en les lisant et en les écrivant avec des champs mis à jour.

Exemple simple

L'interaction avec Akavache se fait principalement via un objet appelé BlobCache .

La plupart des méthodes d'Akavache renvoient des observables réactifs, mais vous pouvez aussi les attendre grâce aux méthodes d'extension.

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

La gestion des erreurs

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