这是monotouch / xamarin环境的一个更通用的软件架构问题。
这是我的问题:
我目前正在构建的应用程序在应用程序启动时下载了大约 30k 的 json 对象(6mb)。然后数据在本地存储,因此所有屏幕都进行本地 db (sqlite) 调用。
主要问题是执行下载所需的时间。目前,模拟器总共大约需要 36 秒,分为以下任务:
- 下载 ~ 10 秒
- 数据转换(json 到本机 obj)~ 16 秒
- 数据库插入 ~ 10 秒
这太长了,尤其是当我将它与应用商店中的类似应用进行比较时。我觉得我没有在这里做某事,或者没有意识到另一种方式?以下是我实施的改进:
- gzip 响应 - 当前为 6mb,使用 gzip 时下降到 ~ 1mb
- 安装 ServiceStack.Text json 序列化器,比 json.net 快大约 2.5 倍(但仍然 16 秒太长)
- 扁平化 json 响应,因此我可以在响应数组上执行 db.InsertAll()(无需额外循环等)以获取更多 robost db 导入(事务)
- 每天一次通话限制
现在,我想做的是在应用启动时显示本地数据并在后台初始化下载/更新程序。唯一的问题是下载所需的时间+新安装的应用程序将没有任何本地数据可显示...
我的问题是:
- mvc 4 api -> json convert -> sqlite import 是这种类型应用程序的好方法吗?如果不是 - 有哪些替代方案?
我一直在考虑服务器在压缩响应中返回实际的 sqlite 文件,或者返回压缩的 db 命令……或者 sqlite 不适合这种类型的应用程序?本地存储是否有更好的替代方案?.net 序列化程序/xml 等?
感谢您的所有建议!