サーチ…


Akavacheを使用したキャッシュ

Akavacheについて

Akavacheは、データをキャッシュするリーチ機能を提供する非常に有用なライブラリです。 Akavacheはキーバリューストレージインターフェイスを提供し、SQLite3の上部で動作します。実際にNo-SQLソリューションとしてスキーマを同期させておく必要はありません。特に、データを損失することなくアプリを頻繁に更新する必要がある場合は、ほとんどのモバイルアプリケーションに最適です。

Xamarinの推奨事項

Akavacheは確かに、Xamarinアプリケーションに最適なキャッシングライブラリです。強固な相対データ、バイナリデータ、または大量のデータで操作する必要がない場合に限ります。次の場合、Akavacheを使用してください。

  • 特定の期間のデータをキャッシュするにはアプリが必要です(保存される各エンティティの有効期限を設定できます。
  • あなたのアプリをオフラインで作業させたい。
  • データのスキーマを決定してフリーズするのは難しいです。たとえば、さまざまな型付きオブジェクトを含むリストがあります。
  • データへの簡単なキー値アクセスで十分です。複雑なクエリを作成する必要はありません。

Akavacheはデータストレージにとって「銀色の弾丸」ではありませんので、次のような場合には2回考えてください。

  • あなたのデータエンティティはお互いに多くの関係を持っています。
  • あなたはオフラインで作業するためにあなたのアプリを本当に必要としません。
  • あなたは、膨大な量のデータをローカルに保存する必要があります。
  • データをバージョン間で移行する必要があります。
  • あなたは、グループ化、投影などのようなSQLの典型的な複雑なクエリを実行する必要があります。

実際には、更新されたフィールドを読み書きするだけで、手動でデータを移行することができます。

簡単な例

Akavacheとの対話が主と呼ばれるオブジェクトを介して行われますBlobCache

Akavacheのメソッドのほとんどは反応的な観測値を返しますが、拡張メソッドのおかげでそれらも待つことができます。

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

エラー処理

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
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow