java - Azure Android Java 客户端

标签 java android azure jaxb

我正在编写一个利用 Microsoft Azure 云的 Android 应用程序

  • 页面 blob(Blob 服务)
  • 关系数据库表 (SQL Azure)
  • 队列

一切看起来都很棒,但是我遇到了一个看起来很坚固的技术砖墙,这可能会阻止我们使用 AZURE;即,Microsoft Java Azure SDK 使用 JAXB。

  1. JAXB 不是由 Android 提供的(如果您想 bundle 它,它会非常大)
  2. Dalvik VM 无法执行 JAXB 中的反射调用
  3. 无法编译成 dex,因为 JAXB 使用 javax 包结构,使用 --core-library 几乎肯定会保证失败。

其他 Azure Java SDK maven 依赖项也在 protected javax 包结构中定义类:

  • javax.xml.bind jaxb-api
  • javax.inject javax.inject
  • com.sun.jersey Jersey 核心
  • stax stax-api
  • javax.activation激活
  • javax.mail 邮件

在我看来,这有效地阻止了使用 Azure 服务来支持 Android 应用程序(对我而言),因为编写我自己的 android 友好 API 来查询 Azure 超出了这个项目的范围。

有没有人有过通过其他机制在 Android 上使用 Azure 服务的经验?

最佳答案

我建议将大部分特定于 Azure 的功能隐藏在 Azure WebRole(使用 WCF)上托管的 RESTful Web 服务后面。 Here教程介绍了如何设置 Azure 以提供基本的 RESTful Web 服务。然后,您的 Android 客户端可以使用 HTTP/JSON/XML 以符合标准的方式与 Azure 通信。

您的目标是让 Web 服务与后端 Azure 组件通信,而不是让 Android 客户端直接与它们通信,例如:

Android -> Azure RESTful WebRole -> Blob、SQL DB、队列、辅助角色

尽管在某些情况下您可能希望您的 Android 客户端直接与 Blob 存储通信(通过 Blob REST 接口(interface))

Android -> Blob
&
Android -> Azure RESTful WebRole -> Blob、SQL DB、队列、辅助角色

如果 WebRole 太贵,您可以将其替换为更便宜的 RESTful Azure 网站,如 this tutorial 中所述.

对于与后端 Azure 组件直接通信的预期方法,还有一点需要考虑的是,您的 Android 客户端将需要存储您的 Azure 帐户 key ,这与将您的帐户密码交给使用您的 Android 客户端的人基本相同。 .. 这是个坏主意。

关于java - Azure Android Java 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13507333/

相关文章:

java - 如何为 REST Web 服务发布 javadoc 而不是 index.jsp 页面

java - 不同线程之间代码块的序列化

android - 如何防止在 Android 架构导航组件中多次打开同一个 fragment ?

c# - 将Web API用作SignalR服务器并从Windows Service中使用它

silverlight - Silverlight 和 Azure Cloud WebRole 之间的 WCF 服务问题

java - Jboss 4.2.3.GA 是否支持 JDK 1.4.2?

java - 不能@Autowired 接口(interface)

java - 错误 :android-apt plugin is incompatible with the Android Gradle plugin. 请改用 'annotationProcessor' 配置

android - 转到 SMS Pro 覆盖 android.provider.Telephony.SMS_RECEIVED

asp.net-mvc - 在 Windows Azure 中分配 SSL 绑定(bind)时出错