Android中的分布式应用程序

Posted

技术标签:

【中文标题】Android中的分布式应用程序【英文标题】:Distributed Application in Android 【发布时间】:2011-08-18 21:47:00 【问题描述】:

我正在尝试对一个 android 应用程序进行分区,以便部分在手机上执行,部分在服务器上执行(服务器可以在其中运行模拟器)。我读过android不支持RMI。我正在考虑像客户端-服务器架构一样执行此操作,其中模拟器在 Eclipse 中运行。 那么做这个项目是否可行呢?任何想法都受到高度赞赏。

谢谢。

【问题讨论】:

【参考方案1】:

Android 设备与存储数据和执行业务逻辑的服务器通信是很正常的。移动设备通常通过 Web 服务与服务器通信,最流行的似乎是 REST+JSON。实现:

    服务器。代码需要与数据库对话,执行业务逻辑并通过 REST+JSON 与设备通信数据。实施取决于您对语言/平台的了解。

    Android 调用 REST 服务并处理返回的 JSON 数据。使用 HttpClient 进行 REST 调用,使用 GSON 解析返回的 JSON 数据。

【讨论】:

服务端执行的方法可能每次都不一样(根据手机端决定是否卸载,具体卸载什么)。这完全可行吗?这将为服务器和电话之间可能的通信方式(不是常规的静态客户端-服务器架构)创建许多场景,所以我不知道我是否可以这样做。有什么建议吗?非常感谢 网络服务类似于普通的方法调用:你选择一个方法来调用,传入一些参数(对象)然后得到回复(一个对象) 服务器上 REST 的简单示例(这是用于 REST 的 java 服务器代码的外观):docs.jboss.org/resteasy/docs/2.0.0.GA/userguide/html_single/…【参考方案2】:

如果使用标准服务器来减轻繁重的工作,您会获得更大的成功。我使用 Android 模拟器的经验是,它处理任务的速度是手机上处理任务的两倍多,这表明将工作卸载到模拟器实际上不会提高工作效率。

如果您使用标准 Java 服务器来完成这项工作,您会发现它带来的收益要大得多。

【讨论】:

是的,我想会使用常规的 java 服务器。我的项目面临的挑战是我试图决定(基于可用资源,例如设备类型和网络带宽等)是在本地还是在服务器上执行方法(因为如果您决定一直卸载,这可能需要在安卓手机上消耗更多的电量)。为此,我应该了解应用程序的依赖关系,并对其进行分区。您是否建议我在类或函数级别进行分区?感谢您的帮助。 是的,在 Eclipse 中创建一个新的 Java 项目并将所有昂贵的方法都放入其中。然后,您可以将该项目包含在您的 Android 项目和新的服务器项目中。这将允许您保持一组集中的类和方法,以使您的 Android 和服务器代码保持同步。 这个方法看起来很有趣,我试试。非常感谢

以上是关于Android中的分布式应用程序的主要内容,如果未能解决你的问题,请参考以下文章

什么是DAPP?

我可以在 Google Play 控制台的哪个位置查看我的应用的 Android 版本分布?

ZooKeeper在HBase中的应用

理解Android系统的进程间通信原理----RPC机制

分布式应用程序中的决策

分布式软件架构中的捆绑优化