2010-09-21 44 views
10

我正在開發一個iPhone應用程序,並且想要創建某種RESTful API,以便應用程序的不同用戶可以共享信息/數據。創建各種社區。爲iPhone應用程序實現RESTful Web API的最便宜方式(平臺/語言)?

說我的應用程序是某種遊戲,我希望用戶能夠在全球排行榜上發佈他們的高分,並保持朋友列表並查看他們的分數。我的應用程序不是這樣的,但它顯示了我需要實現的一種集體信息訪問。

我可以實現這一點的方式是建立一個PHP和MySQL服務器,並有一個php腳本與數據庫進行交互,並通過獲取GET請求並返回,在數據庫和iPhone上的每個用戶之間調解請求一個JSON字符串。

這是一個很好的方法嗎?在我看來,使用PHP是一種實現這一點的緩慢方式,而不是說一種編譯語言。但我可能是非常錯誤的。我試圖保留我的託管賬單,因爲我打算免費發佈應用程序。我確實認識到,在CPU週期和內存使用方面表現更好的實現(例如編寫成C#語言編寫的內容)可能需要比LAMP服務器更昂貴的託管解決方案,因此實際上可能最終以$ /請求。

我也希望我的實現可以在很多人開始使用該應用的情況下進行擴展。使用量是否將性能/ $比率轉換爲不同的實施方式?即如果我每天有1k個請求,那麼使用PHP + MySQL可能會更便宜,但每天1M個請求可能會使用其他更便宜的東西?總之,如何實現一個(相當簡單的)遠程數據庫,使用HTTP(S)遠程訪問以最小化託管賬單?什麼樣的託管解決方案和什麼樣的平臺/語言?

UPDATE:per Karl的建議我試過了:Ruby(語言)+ Sinatra(框架)+ Heroku(應用託管)+ Amazon S3(靜態文件託管)。對於任何閱讀這篇文章的人來說,我可能會遇到同樣的困境,這種設置非常棒:輕鬆擴展(「無限」),價格合理,易於使用。謝謝Karl!

無法評論數據庫的細節,因爲我還沒有實現,儘管對於我的簡單查詢需求,CouchDB和MongoDB看起來像是不錯的選擇,它們與Heroku集成在一起。

+0

您好codenoob。有關這方面的消息嗎?你完成了你的解決方案嗎?你有沒有找到時間嘗試應用程序引擎? – j7nn7k 2011-01-12 00:03:04

+0

嘿Johe,我已經實現了它,現在正在iOS客戶端上工作。我在Heroku上運行帶有在Amazon S3上運行的靜態文件和在MongoHQ上運行的MongoDB數據庫的Sinatra的Ruby。這是實現使用西納特拉一個RESTful協議非常簡單,一切都是高度可擴展的,我只付我使用的資源。我還沒有嘗試過應用引擎,因爲這對我來說非常合適。 – lms 2011-01-12 09:41:51

回答

5

您是否考慮過使用Sinatra並在[Heroku]上託管它?這正是Sinatra擅長的(REST服務)。 Heroku託管可能是免費的,這取決於您需要存儲的數據量。只需保留所有支持文件(圖像,JavaScript,CSS)在S3上。你將會在雲中飛翔。

這可能不適合你的PHP需求,但說實話,它並沒有比Sinatra更容易。

+0

鏈接的Heroku:http://heroku.com/ – Karl 2010-09-21 20:33:06

+0

這看起來很有趣,我就給你一展身手。我認爲我現在可以免費獲得免費的Blossom服務,並且如果應用的需求增長,價格看起來非常合理。不過,我可能會在未來嘗試谷歌應用引擎。謝謝(你的)信息! – lms 2010-09-22 18:28:53

0

這歸結爲成本vs經驗之間的折衷。

如果你有專業知識,我肯定會研究某種形式的基於雲的基礎設施,如Google App Engine。您使用哪種雲平臺取決於您使用不同語言的經驗(AppEngine僅適用於Python/Java)。通常,可擴展的基於雲的平臺具有更多「陷阱」並需要更多專有技術,因爲它們專門針對高端可擴展性進行了調整(因此在某些情況下需要了解企業級概念)。

如果您想盡快啓動並運行,我將親自安裝CakePHP。設置模型數據以表示您正在管理的基本實體,然後使用CakePHP的奇妙的愛好萬能的魔術來輕鬆暴露這些模型上的CRUD更新!

+0

我決定現在就去Sinatra和Heroku,因爲它看起來很簡單,可以做我想做的事情。我已經看過GAE,並且已經有了一些Java的經驗,所以我一定會在未來嘗試這一點。謝謝你的提示! – lms 2010-09-22 18:30:11

0

與使用HTTP的方式相比,用於實現REST服務的技術對性能和託管成本的影響要小得多。學習利用HTTP遠不僅僅是學習如何使用GET,PUT,POST和DELETE。

使用您已知的任何服務器端技術,並花費一些閱讀RFC2616的質量時間。你會爲自己節省大量的時間和金錢。

0

在你的情況下,它的數據庫服務器是在每個請求上訪問的。所以即使你編譯過語言(比如說C#或者java),它也不會太重要(除非你正在做一些數據轉換或處理)。

因此DB服務器必須很好地擴展。在這裏您可以選擇語言和數據庫,並配置主機操作系統。

簡而言之,如果您使用最少的數據處理發送/接收JSON字符串並在DB中存儲/檢索,PHP + MySQL就不錯。

下一個應用程序變得流行,如果你的應用程序不需要頻繁地更新現有的數據,那麼你可以將這些數據像MongoDB的非常高的可擴展數據庫(JSON友好)。

相關問題