수색…


Akavache를 사용한 캐싱

Akavache 정보

Akavache 는 데이터 캐싱 기능을 제공하는 매우 유용한 라이브러리입니다. Akavache는 키 - 값 스토리지 인터페이스를 제공하며 SQLite3의 최상위에서 작동합니다. 실제로 데이터 손실없이 앱을 자주 업데이트해야하는 경우 특히 대부분의 모바일 애플리케이션에 완벽하게 적용되는 No-SQL 솔루션이므로 스키마를 동기화 된 상태로 유지할 필요가 없습니다.

Xamarin에 대한 권장 사항

Akavache는 확실하게 Xamarin 응용 프로그램에 가장 적합한 캐싱 라이브러리입니다. 사용자가 강력하게 상대적인 데이터, 바이너리 또는 대용량 데이터로 작업 할 필요가없는 경우에 한합니다. 다음과 같은 경우에 Akavache를 사용하십시오.

  • 특정 기간 동안 데이터를 캐시하려면 앱이 필요합니다 (저장되는 각 엔티티에 대해 만료 시간 제한을 구성 할 수 있습니다.
  • 앱을 오프라인에서 작업하고 싶습니다.
  • 데이터 스키마를 결정하고 동결하는 것은 어렵습니다. 예를 들어, 다른 유형이 지정된 객체가 포함 된 목록이 있습니다.
  • 데이터에 대한 간단한 키 - 값 액세스 만 있으면 충분하며 복잡한 쿼리를 작성할 필요가 없습니다.

Akavache는 데이터 저장을위한 "총알"이 아니므로 다음과 같은 경우에 사용하는 것에 대해 두 번 생각하십시오.

  • 데이터 엔티티는 서로간에 많은 관계가 있습니다.
  • 오프라인으로 작업하기 위해 앱이 실제로 필요하지는 않습니다.
  • 로컬에 저장할 엄청난 양의 데이터가 있습니다.
  • 버전간에 데이터를 마이그레이션해야합니다.
  • 당신은 그룹핑, 투영 등과 같은 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