Php 为iPhone应用程序实现RESTful web API最便宜的方法(平台/语言)?

Php 为iPhone应用程序实现RESTful web API最便宜的方法(平台/语言)?,php,iphone,rest,hosting,cloud,Php,Iphone,Rest,Hosting,Cloud,我正在开发一个iPhone应用程序,希望创建某种RESTful API,以便应用程序的不同用户可以共享信息/数据。创建各种各样的社区 假设我的应用程序是一种游戏,我希望用户能够在全球排行榜上发布他们的高分,同时维护朋友列表并查看他们的分数。我的应用程序与此不同,但它显示了我需要实现的集体信息访问 我可以实现这一点的方法是设置一个PHP和MySQL服务器,并使用一个PHP脚本与数据库交互,通过接受GET请求并返回JSON字符串,在DB和iPhone上的每个用户之间调解请求 这是一个好方法吗?在我看

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

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

我可以实现这一点的方法是设置一个PHP和MySQL服务器,并使用一个PHP脚本与数据库交互,通过接受GET请求并返回JSON字符串,在DB和iPhone上的每个用户之间调解请求

这是一个好方法吗?在我看来,与编译语言相比,使用PHP是一种缓慢的实现方式。不过我可能大错特错了。我正在努力降低我的托管费用,因为我计划免费发布这个应用程序。我确实认识到,在CPU周期和RAM使用率方面表现更好的实现(例如,用C#?)编写的编译内容可能需要比LAMP服务器更昂贵的托管解决方案,因此可能最终在$/请求方面更加昂贵

我还希望我的实现在很少有人开始使用该应用的情况下具有可扩展性。使用量是否将性能/美元比率转移到不同的实现?也就是说,如果我每天有1k个请求,那么使用PHP+MySQL可能会更便宜,但每天有1M个请求可能会使使用其他东西更便宜

总而言之,为了最大限度地减少托管费用,您将如何实现一个(相当简单的)远程数据库,该数据库将使用HTTP进行远程访问?什么样的托管解决方案和什么样的平台/语言

更新:根据卡尔的建议,我尝试过:Ruby(语言)+Sinatra(框架)+Heroku(应用程序托管)+AmazonS3(静态文件托管)。对于任何一个读到这篇文章的人来说,他们可能会遇到和我一样的困境,这个设置是惊人的:轻松地可扩展(到“无限”),价格合理,易于使用。谢谢你,卡尔


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

这归结为成本与体验之间的折衷

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


如果你想尽快和简单地启动和运行,我会亲自去安装。将模型数据设置为表示您正在管理的基本实体,然后使用CakePHP的奇妙约定魔法轻松地在这些模型上公开CRUD更新

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

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

您是否考虑过在[Heroku]上使用和托管它?这正是Sinatra擅长的(REST服务)。根据需要存储的数据量,Heroku托管可能是免费的。只需将所有支持文件(图像、javascript、css)保存在S3上即可。你很快就会飞向云端


这可能不符合您的PHP愿望,但老实说,它不会比Sinatra更容易。

在您的情况下,它的数据库服务器会在每次请求时被访问。所以,即使您使用了编译语言(比如C#或java),它也不会有多大影响(除非您正在进行一些数据转换或处理)

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

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


下一个应用程序很受欢迎,如果你的应用程序不需要频繁更新现有数据,那么你可以将这些数据移动到非常高可伸缩的数据库,如MongoDB(JSON友好)。

这看起来很有趣,我会试试看。我想我现在可以免费使用Blossom服务,如果应用程序的需求增长,价格上涨似乎非常合理。不过,我可能会在将来的某个时候尝试谷歌应用程序引擎。谢谢你的信息!我现在决定选择西纳特拉和希罗库,因为做我想做的事情似乎很简单。我已经看过GAE,并且已经在Java方面有了一些经验,所以我将来肯定也会尝试。谢谢你的提示!嗨,科德努布。有什么消息吗?你完成你的解决方案了吗?你找到时间试试应用程序引擎了吗?嘿,约翰,我已经实现了,现在正在开发iOS客户端。我在Heroku上使用Ruby和Sinatra,在AmazonS3上使用静态文件,在MongoHQ上使用MongoDB数据库。使用Sinatra实现RESTful协议非常简单,而且一切都非常可扩展,我只为使用的资源付费。我没有尝试过应用程序引擎,因为它对我来说非常有效。