【问题标题】:Persistance of complex Java objects (SQLite, Serialization, JSON) and client-server app architecture复杂 Java 对象(SQLite、序列化、JSON)和客户端-服务器应用程序架构的持久性
【发布时间】:2011-11-24 14:58:11
【问题描述】:

我正在开发一个从互联网获取数据的 Android 应用程序。实际上,这个项目是由其他人开始的,现在已经不在了, 现在我必须把它变成一个轻量级的客户端应用程序并实现服务器端(在 Java 中),我想知道什么是最好的工具/模式来满足我的需求。

假设我必须处理所有从一个类继承的对象的几个模型(表示一个类别的类):它们具有共同的属性(例如名称、附件缩略图...),但也具有特定的属性。 正因为如此,您可以理解我无法管理一个特定的表来映射每个单独的类。

但是,我仍然希望能够在 Android 设备中的某个位置缓存我的对象,以便在离线模式下工作时填充应用程序的视图。

目前,之前开发者使用的解决方案是将数据作为序列化对象直接存储到 SQLIite 数据库中的 TEXT 字段中。 这在服务器端应该没问题,但我读过通常的 Java 序列化在 Android 平台上非常慢,尽管现在它并不明显,因为我使用大约 50 个对象,我一直在寻找性能更高的替代品未来。

我遇到了 JSON 解决方案,它可以轻松处理复杂的结构,Jackson 库似乎非常有趣,它简化了与 POJO 对象的数据绑定及其众所周知的性能。 但是,我应该如何存储我的 Json 对象? 是否可以在 SQlite 表的 TEXT 字段中保留 json 字符串? 还是我应该将它们存储为每个对象的 .json 文件? 哪一个更有效地检索以后的大量数据?

另外,我认为 JSON 将是 Android 客户端应用程序和我的服务器之间的一种非常好的交换格式,我的服务器负责处理来自互联网第三方 api 的信息并通过 web 服务公开这些数据。 (而不是尝试实现一些类似 RMI 的解决方案) 在 Android 上使用通常的 Apache HTTPClient 是否足以与服务器通信?

对于那些成功开发客户端-服务器应用程序(这对我来说似乎很常见)的人来说,这对 Android 来说是一个好方法吗? 在我看来,对于移动平台,你不能真正使用你学到的方法来处理更经典的 J2EE 应用程序等...... 任何建议都将不胜感激,因为我是一名学生和 Android 初学者,非常想提高她的移动开发技能!

谢谢:)

【问题讨论】:

  • 第一个表用于具有基本字段(id、名称、附件缩略图...)的对象,第二个用于附加字段定义(一些 id、名称和/或类型),第三个用于链接对象来自 2nd 和 values(id, 1st_table_id, 2nd_table_id, value_as_text) 的第一个字段?

标签: android json web-services serialization persistence


【解决方案1】:

这是可以讨论的,所以 SO 可能不是最好的提问地方。一般来说,在宣布某件事太慢(或太快)之前,请测量、比较并选择最适合您的那个。是的,您可以将 JSON 保存在数据库中,这通常比在 FS 上拥有单独的文件要快。但是,再次进行基准测试和比较。

顺便说一句,大多数 J2EE '方法'(模式)对于任何平台来说都是多余的,更不用说移动了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    相关资源
    最近更新 更多