【问题标题】:How to persist/cache data in cross platform Mono App (eg. Xamarin Framework)?如何在跨平台 Mono App(例如 Xamarin 框架)中持久化/缓存数据?
【发布时间】:2012-08-02 13:20:19
【问题描述】:

我正在寻找一个好的解决方案来存储和/或缓存用 C#(Xamarin 的 MonoTouch 和 MonoDroid + WindowsPhone)开发的跨平台应用程序中的数据。简单的键/值对就足够了。存储的数据将用作一般缓存和持久性,以便在应用启动时显示某些内容,同时从服务器获取新数据。

Akavache 看起来很像我想要的,但是如何将它集成到我的项目中呢?它会选择正确的存储路径吗?周围有类似的库吗?

【问题讨论】:

    标签: caching xamarin.ios persistence xamarin.android key-value-store


    【解决方案1】:

    我没有尝试过 Akavache jet,而是在 Android 和 iOS 上围绕首选项 API 实现了 cross-plattform wrapper:

    var storage = SimpleStorage.EditGroup("group name of key/value store");
    storage.Put("myKey", "some value");
    var value = storage.Get("myKey");
    

    该项目托管在GitHub 上,并作为免费的NuGet Package 分发。除了字符串存储,它还提供异步/等待方法和复杂对象的序列化/反序列化。

    【讨论】:

    • 你没有提到 SimpleStorage 不支持过期对象,这是任何缓存解决方案最重要的方面。
    • SimpleStorage 仅用于帮助您保持设置和标志的持久性。你可以在它之上构建一个缓存系统,但这个库的目的是提供对平台自己的偏好 API 的简单访问。
    • 请编辑您的回复,提及它缺少缓存以避免浪费其他人的时间认为它支持缓存而它不支持
    • @Korayem 它使用的存储机制无论如何都不是用于缓存。它使用用户偏好存储,这正是简单的键值存储。
    • @rodja @andrey 问题是关于persist 和cache。建议的解决方案 SimpleStorage 不支持 Cache 因此答案需要明确说明以避免浪费其他人的时间。
    【解决方案2】:

    我建议只使用XmlSerializer 或您习惯在.Net 中使用的东西。您可以根据平台更改文件存储的路径。

    Akavache 看起来很有前途,但如果您只需要一对键值对,它看起来有点矫枉过正。

    【讨论】:

    • 缓存就是在一段时间后使数据过期。没有它,它只是数据持久性。
    【解决方案3】:

    Akavache 将自动在 iOS 和 Android 上设置正确的路径,它将使用来自您的应用程序的信息(来自 Android 上的 AndroidManifest.xml 和 iOS 上的 info.plist)。

    【讨论】:

    • 我可以在没有 RxUI 的情况下使用 Akavache 吗?或者有没有关于 Akavache 的样本或文档?只需一个简单的 REST 调用并缓存结果示例?
    • Akavache 依赖于 ReactiveUI 的核心 DLL。不过,您不必实际使用 ReactiveUI。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多