实现iPhone应用的RESTful Web API的最便宜方式(平台/语言)是什么?

10

我正在开发一款iPhone应用程序,想要创建某种RESTful API,以便该应用程序的不同用户可以共享信息/数据,从而创建社区。

比方说我的应用程序是某种游戏,我希望用户能够将他们的最高分发布到全球排行榜上,并维护好友列表并查看他们的分数。我的应用程序与此无关,但它展示了我需要实现的集体信息访问类型。

我可以这样实现:设置一个PHP和MySQL服务器,并编写一个php脚本,与数据库交互、处理来自iPhone每个用户的请求,通过接收GET请求并返回JSON字符串来完成。

这种方法可行吗?在我看来,使用PHP实现这种功能可能比使用编译语言慢。但我可能非常错误。我试图控制托管账单,因为我计划免费发布该应用程序。我认识到,在CPU周期和RAM使用方面表现更佳的实现(例如使用C#编写的编译型代码)可能需要比LAMP服务器更昂贵的托管解决方案,因此在每次请求的成本方面可能实际上会更高。

我还希望我的实现在很少情况下可以进行扩展,以防大量人开始使用该应用程序。使用量是否会将性能/成本比率转向不同的实现方式?也就是说,如果我每天有1k个请求,使用PHP+MySQL可能更便宜,但如果每天有1M个请求,使用其他东西可能会更便宜?

总而言之,您如何实现一个(相当简单的)远程数据库,可以使用HTTP(S)进行远程访问,以最小化托管账单?使用什么样的托管解决方案和什么样的平台/语言呢?

更新:根据Karl的建议,我尝试了:Ruby(编程语言)+ Sinatra(框架)+ Heroku(应用程序托管)+ Amazon S3(静态文件托管)。对于任何阅读此文并遇到与我类似问题的人来说,这种设置非常棒:易于扩展(可扩展至“无限”),价格合理,易于使用。谢谢Karl!

因为我还没有实现具体的数据库,所以无法对数据库进行评论,尽管对于我的简单查询要求,CouchDB和MongoDB似乎是不错的选择,并且它们与Heroku集成。


你好,codenoob。有什么新消息吗?你完成了解决方案吗?你有时间尝试应用引擎吗? - j7nn7k
嘿Johe,我已经实现了它,现在正在开发iOS客户端。我使用Ruby和Sinatra在Heroku上运行,静态文件存储在Amazon S3上,MongoDB数据库在MongoHQ上运行。使用Sinatra实现RESTful协议非常简单,而且一切都非常可扩展,我只支付我使用的资源费用。我还没有尝试过应用引擎,因为这对我来说完美无缺。 - lmirosevic
4个回答

5

你考虑过使用 Sinatra 并将其托管在 [Heroku] 上吗?这正是 Sinatra 擅长的(REST 服务)。而且,根据你需要存储的数据量,使用 Heroku 可能是免费的。只需将所有支持文件(图像、JavaScript、CSS)放在 S3 上即可。你将进入云端,并很快就能起飞。

这可能不符合你对 PHP 的渴望,但老实说,没有什么比 Sinatra 更容易了。


这看起来非常有趣,我会试一试。我认为现在可以使用免费的Blossom服务,如果应用程序的需求增长,价格似乎很合理。将来我可能会尝试谷歌应用引擎。感谢提供信息! - lmirosevic

0

这涉及到成本与经验之间的权衡。

如果您有专业知识,我肯定会考虑一些基于云的基础设施,比如Google App Engine。您选择哪个云平台取决于您对不同语言的熟悉程度(例如,AppEngine仅适用于Python / Java)。但总的来说,可扩展的基于云的平台有更多的“陷阱”,需要更多的专业知识,因为它们是专门针对高端可扩展性进行调整的(因此在某些情况下需要了解企业级概念)。

如果您想尽快简单地启动并运行,我个人会选择CakePHP安装。设置模型数据以表示您正在管理的基本实体,然后使用CakePHP的奇妙约定爱好者魔法轻松地公开这些模型上的CRUD更新!


我决定现在采用Sinatra和Heroku,因为它似乎非常简单,可以做到我想要的。我已经看过GAE,而且已经有一些Java的经验,所以将来我一定会尝试这个。感谢你的建议! - lmirosevic

0

实现REST服务所使用的技术对性能和托管成本的影响远不如使用HTTP的方式重要。学会利用HTTP远不止是学习如何使用GET、PUT、POST和DELETE。

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


0

在您的情况下,每个请求都会访问数据库服务器。因此,即使您使用编译语言(如C#或Java),也不会有太大影响(除非您正在进行一些数据转换或处理)。

因此,DB服务器必须具备良好的可扩展性。在这里,您选择的语言和DB应该与主机操作系统进行良好的配置。

简而言之,如果您正在发送/接收JSON字符串并以最小的数据处理将其存储/检索到DB中,则PHP+MySQL是不错的选择。

如果下一个应用程序变得流行起来,并且您的应用程序不需要频繁更新现有数据,则可以将此类数据移动到非常高可扩展的数据库,例如MongoDB(友好的JSON)。


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