2011-03-07 64 views
3

我目前正在开发我的第一个Android应用程序,并仍在设计阶段试图提出一个实体模型。使用Amazon EC2和SimpleDB的Android应用程序设计

我的应用程序将使用克卡数据从用户的谷歌日历和与一个或多个其他用户同步起来,以确定所有之间的共同会议时间不繁琐的来回调度通过电子邮件。

我希望通过将每个用户及其日历数据存储在每天都会刷新的数据库中来实现这一目标。当发出确定组之间最佳会议时间的查询时,我希望从数据库中选择每个用户的日历数据,执行计算以查找最佳时间,并将结果显示回发出查询的用户。

AWS SDK为Android支持亚马逊的SimpleDB和S3,在这种情况下,我会用SimpleDB的为我的数据库。我迷失方向的地方是使用Amazon EC2 Web服务与SimpleDB一起执行计算。

首先,我的方法和/或设计的任何反馈意见。

其次,如何使用非基于Android,但的Java API/SDK的应用效果,或者是它甚至有可能这样做?

用于Java的API typica看起来有趣和有用的,如果有可能与Android使用的实例。

谢谢!

+0

你所描述的内容已经由http://www.doodle.com/完成了。不过,继续工作吧,你会学到很多东西。 – 2011-03-23 13:19:29

回答

4

所以,我认为其中重要的是要注意几件事情。

  1. 你所描述的不是'android应用程序'。它是一个带有Android客户端的Web服务应用程序。我迂腐的原因是,你需要做的许多设计决定完全是,除了你的主要客户端将在android上运行的事实。

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

  3. 当它真实是AWS的SDK,Android支持写入S3或SimpleDB的,我觉得有很多考虑。您对EC2交互感到困惑的原因是,通常您的EC2 Web服务将与S3或SimpleDB进行交互。通过使用AWS SDK,理论上可以从中删除对Web服务的要求。我的主要问题是你现在被迫在每个客户端上做更多的事情,因为没有共同的访问模式。您的ios客户端或Web客户端需要拥有与您的Android客户端一样的逻辑,以确保其访问您的s3和简单的db数据相同。如果这没有意义,我可以详细说明。

  4. 使用非android api和sdks是一个混杂的包。有时如果类编译到Davlik,它会正常工作。如果他们不这样做不起作用。

我可能会指出的一件事情,因为您已经可能与Google技术绑定的是Google App Engine。关于它的好处是有一个免费的服务级别,可以让您的应用程序无需开启即可运行。根据你所建议的技术,这可能是你需要研究的东西。除此之外,我的另一个强烈建议是,您专注于构建Web服务,并独立于Android客户端。花时间模拟客户端服务器交互的内容,尽可能多地将“逻辑”移到服务器上。多数民众赞成在我的初始描述中缺少的东西。嘎吱嘎吱的是。

+1

我同意尼克,你需要一个你自己的网络服务。不要让你的客户端(表示层)直接与你的持久层(SDB,S3,SQL)对话。把你自己的Web服务放在两者之间。仅供参考,AWS最近启动了免费套餐,因此您现在可以免费开始使用GAE或AWS。 – 2011-03-08 00:19:31

+0

@Spike关于AWS免费!我现在也会测试它:) – 2011-03-08 00:51:03

+0

很酷,感谢您的反馈!我决定和GAE一起参加这一次。尽管在说我所描述的是一个使用Android设备作为主要客户端的Web应用程序,但您是绝对正确的。我没有那样看待我最应该去的地方。 – mcorley 2011-03-08 23:08:14

0

我的解决方案是您使用O-O原则。将您的数据库存储在亚马逊dynamoDB上,然后将用户数据与移动应用程序同步。那么你在显示结果之前在设备上处理数据/计算

相关问题