以最便宜的方式(平台/语言)为iPhone应用程序实现RESTful Web API?

时间:2010-09-21 00:28:44

标签: php iphone rest hosting cloud

我正在开发一个iPhone应用程序,并希望创建某种RESTful API,以便应用程序的不同用户可以共享信息/数据。创建各种社区。

说我的应用程序是某种游戏,我希望用户能够在全球排行榜上发布他们的高分,并维护朋友列表并查看他们的分数。我的应用程序不是这样的,但它显示了我需要实现的集体信息访问。

我可以实现这一点的方法是建立一个PHP和MySQL服务器,并拥有一个与数据库交互的php脚本,通过获取GET请求并返回一个来调解数据库与iPhone上每个用户之间的请求。 JSON字符串。

这是一个很好的方法吗?在我看来,使用PHP是一种缓慢的实现方式而不是编译语言。我可能是非常错的。我试图保持我的托管账单,因为我打算免费发布应用程序。我确实认识到在CPU周期和RAM使用方面表现更好的实现(例如用C#编写的编译?)可能需要比LAMP服务器更昂贵的托管解决方案,所以实际上最终可能会更昂贵/请求。

我还希望我的实现在少数人开始使用该应用程序的罕见情况下可扩展。使用量是否会将性能/ $比率转移到不同的实现?即如果我每天有1k请求,那么使用PHP + MySQL可能会更便宜,但每天1M请求可能会使用其他更便宜的东西吗?

总结一下,如何实现一个(相当简单的)远程数据库,使用HTTP(S)远程访问,以最大限度地减少托管账单?什么样的托管解决方案和什么样的平台/语言?

更新:根据Karl的建议,我尝试过:Ruby(语言)+ Sinatra(框架)+ Heroku(应用托管)+ Amazon S3(静态文件托管)。对于那些可能有同样困境的人来说,这个设置是惊人的:毫不费力地可扩展(到“无限”),价格合理,易于使用。谢谢卡尔!

暂不评论数据库细节因为我还没有实现,但是对于我的简单查询要求,CouchDB和MongoDB似乎是不错的选择,它们与Heroku集成。

4 个答案:

答案 0 :(得分:5)

您是否考虑过使用Sinatra并将其托管在[Heroku]上?这正是Sinatra擅长的(REST服务)。使用Heroku托管可能是免费的,具体取决于您需要存储的数据量。只需在S3上保留所有支持文件(图像,javascript,css)。你会在云中飞行并立即飞行。

这可能不适合您的PHP愿望,但说实话,它并没有比Sinatra更容易。

答案 1 :(得分:0)

归结为成本与经验之间的权衡。

如果你有专业知识,我肯定会研究某种形式的基于云的基础设施,比如Google App Engine。您使用的云平台取决于您使用不同语言的经验(AppEngine仅适用于Python / Java)。一般而言,可扩展的基于云的平台具有更多“陷阱”并需要更多技术诀窍,因为它们专门针对高端可扩展性进行了调整(因此在某些情况下需要了解企业级概念)。

如果您希望尽可能快速简单地启动和运行,我个人会进行CakePHP安装。设置模型数据以表示您正在管理的基本实体,然后使用CakePHP精彩的会议爱好魔术轻松地在这些模型上公开CRUD更新!

答案 2 :(得分:0)

与使用HTTP的方式相比,用于实现REST服务的技术对性能和托管成本的影响要小得多。学习利用HTTP不仅仅是学习如何使用GET,PUT,POST和DELETE。

使用您已经了解的任何服务器端技术,并花一些时间阅读RFC2616。你会节省大量的时间和金钱。

答案 3 :(得分:0)

在您的情况下,它是在每个请求上访问的数据库服务器。所以即使你有编译语言(比如说C#或java),它也不重要(除非你正在做一些数据转换或处理)。

所以数据库服务器必须很好地扩展。在这里,您应该使用主机操作系统配置语言和数据库。

简而言之,如果您发送/接收JSON字符串并在DB中以最少的数据处理存储/检索,PHP + MySQL就很好。

下一个应用程序变得流行,如果您的应用程序不需要频繁更新现有数据,那么您可以将这些数据移动到非常高的可扩展数据库,如MongoDB(JSON友好)。