使用Amazon EC2和SimpleDB进行Android应用程序设计

3
我目前正在开发我的第一个Android应用程序,还处于设计阶段,试图提出一个稳定的模型。
我的应用程序将使用用户Google日历中的GCal数据,并将其与一个或多个其他用户同步,以确定所有用户之间的共同会议时间,而不需要通过电子邮件进行繁琐的来回安排。
我设想通过将每个用户及其日历数据存储在数据库中来实现这一点,该数据库将每天刷新一次。当发出查询以确定一个组之间最佳会议时间时,我希望从数据库中选择每个用户的日历数据,执行计算以找到最佳时间,并将结果显示给发出查询的用户。
Android的AWS SDK支持Amazon SimpleDB和S3,这种情况下,我将使用SimpleDB作为我的数据库。我的问题在于如何使用Amazon EC2 Web服务与SimpleDB协同工作来执行计算。
首先,请提供有关我的方法和/或设计的任何反馈,感激不尽。
其次,使用非Android但基于Java的API / SDK对应用程序有何影响,甚至是否可能这样做?
如果可能的话,Java的typica API看起来很有趣且有用。
谢谢!

你所描述的已经被http://www.doodle.com/完成了。继续努力,你会学到很多东西。 - David d C e Freitas
2个回答

4
那么,我认为有几件事需要注意。
  1. 您所描述的不是一个“Android应用程序”,而是具有Android客户端的Web服务应用程序。我这样严格确切是因为你需要做出许多设计决策,这些决策与你的主要客户端将在Android上运行完全无关。

  2. 我担心在非关系型数据库中存储用户日历的可行性。我不知道您是否已经研究过这个问题,但您试图解决的问题(日历)似乎会受益于关系数据库的关系优势。例如,我不确定如何在非关系型数据库中结构化存储过去、现在和未来事件/会议的数据。这可能是可能的,但我不确定它是否最优。根据数据量,您还需要考虑最大记录大小。

  3. 虽然Android的AWS SDK支持写入S3或SimpleDB,但我认为还有很多需要考虑的。您对与EC2的交互感到困惑的原因是通常情况下,您的EC2 Web服务将与S3或SimpleDB进行交互。通过使用AWS SDK,您可以理论上删除Web服务的要求。我的主要问题是,现在您需要在每个客户端上都执行更多操作,因为没有公共访问模式。您的iOS客户端或Web客户端需要具有与Android客户端相同的所有逻辑,以确保访问S3和SimpleDB数据相同。如果这不合理,我可以详细说明。

  4. 使用非Android API和SDK是个各有利弊的问题。有时,如果类编译为Davlik,则可以正常工作。如果没有,则无法使用。

还有一件事情可能需要指出,因为您已经可能与谷歌技术联系在一起,那就是Google应用引擎。好处是它有免费的服务级别,让您无需成本即可启动应用程序。根据您提出的技术,这可能是您要考虑的东西。除此之外,我的另一个强烈建议是您首先专注于构建Web服务,独立于Android客户端。花时间对客户机服务器交互进行建模,并尽可能将“逻辑”移至服务器。这是我感觉您最初的描述中缺少的部分。研究如何处理数据。


1
我同意Nick的观点,你需要自己的Web服务。不要让你的客户端(演示层)直接与持久层(SDB、S3、SQL)通信。在它们之间加入自己的Web服务。FYI,AWS最近推出了一个免费层,所以你现在可以免费开始使用GAE或AWS。 - Spike Gronim
@Spike很好,AWS免费!我现在也要测试一下 :) - Nick Campion
谢谢你的反馈!我决定在这个项目中选择GAE。你说得完全正确,我描述的确实是一个使用Android设备作为主要客户端的Web应用程序。我之前没有从这个角度来看,但确实应该这样考虑。 - mcorley

0
我的建议是使用面向对象的原则。将您的数据库存储在亚马逊的DynamoDB上,然后将用户数据与移动应用程序同步。在显示结果之前,对设备上的数据/计算进行处理。

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