安卓中客户端与服务器通信的选项

13

目前我正在我的博士论文项目的研究阶段。

我的项目是一个移动设备的票务预订系统,我选择了针对Android系统进行开发。

我预计需要使用客户端/服务器架构,并拥有一个中央服务器。因此,我目前正在研究如何让Android能够与这样的服务器进行通信。服务器将会授权客户端访问票务信息,而客户端将向服务器发送有关票务预订的信息。我正在研究Java EE作为服务器,因为Java是我最有经验的语言。

我知道Android自带java.niojava.net,还有一些org.apache包,但我也在寻找可以用于Android的库和技术。

到目前为止,我在互联网上尚未找到任何非常有用的东西,所以我想看看SO能建议什么。

具体来说,我想知道:

  1. Android对各种中间件技术的支持情况是怎样的?例如
    • 基于RPC的中间件
    • CORBA
    • 基于消息的中间件
    • Web服务,例如XML-RPC,SOAP,REST
  2. 使用现有的Java库在Android平台上工作如何?(例如,如果我想使用为Java SE设计的库/API而不是Android,我可能会遇到哪些问题?)

理想情况下,由于我的项目重点并不在服务器和客户端之间的通信上,所以我可以使用现有的中间件来处理通信,但我已准备好应对最坏的情况,即必须自己编写。

1个回答

15
有哪些中间件技术在Android上得到支持?
我个人的看法是,仅针对互联网设计的协议才适合与移动客户端一起使用,因此,在你提到的中间件技术中,唯一值得考虑的是:
Web服务,如XML-RPC、SOAP和REST。
一些人一直在维护kSOAP2的Android版,但我有明显的感觉,大多数从事这个领域的Android开发人员都倾向于REST和REST-ish协议。总之,所有有趣的网站和服务都使用API提供REST,尤其是与XML-RPC(旧)和SOAP(旧且不好用)相比。
我已经成功地在Android中使用java.net.URLConnection和Apache HTTPClient库来与REST风格的端点进行通信 - 直接使用和通过第三方JAR - 没有实际的Android特定问题。
现有的Java库在Android平台上使用时效果如何(好或者不好)?
抽象地回答这个问题是很困难的。Android实现了JavaSE的大部分子集,但并不是全部,所以任何给定的JAR都可能期望Android没有提供的内容。同样,Android不使用环境变量、命令行开关或其他各种桌面开发人员可能引入的东西作为半要求。因此,有些东西只需要重新编译(Beanshell)就可以,有些东西只需删除冗余的类(JTwitter),有些东西看起来将很难使其工作(JavaMail)。

1
这个问题现在有点老了,但仍然吸引了很多关注。您的答案是否仍然是最新的,或者在过去的三年里,Android环境是否发生了变化? - chrisbunney
2
@chrisbunney:有人成功地使用了JavaMail,所以这不再是问题。HttpUrlConnection是REST客户端的推荐方法,而不是Apache HTTPClient。否则,我认为我之前的建议仍然相当准确。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接