2010-09-21 11 views
10

Ich entwickle eine iPhone App und möchte eine Art RESTful API erstellen, damit verschiedene Benutzer der App Informationen/Daten teilen können. Um eine Art von Gemeinschaft zu schaffen.Günstigster Weg (Plattform/Sprache) um eine RESTful Web API für eine iPhone App zu implementieren?

Angenommen, meine App ist eine Art von Spiel, und ich möchte, dass der Nutzer seinen Highscore auf einer globalen Rangliste posten kann, sowie eine Liste von Freunden pflegen und ihre Punktzahlen sehen kann. Meine App ist nicht so, aber sie zeigt die Art des kollektiven Informationszugriffs, den ich implementieren muss.

Die Art, wie ich dies implementieren könnte, ist die Einrichtung eines PHP und MySQL-Servers und ein PHP-Skript, das mit der Datenbank interagiert und vermittelt die Anfragen zwischen der DB und jedem Benutzer auf dem iPhone, indem eine GET-Anfrage und die Rückkehr eine JSON-Zeichenfolge

Ist das ein guter Weg? Scheint mir, als ob die Verwendung von PHP eine langsame Art ist, dies zu implementieren, im Gegensatz zu einer kompilierten Sprache. Ich könnte jedoch sehr falsch liegen. Ich versuche, meine Hosting-Rechnungen niedrig zu halten, weil ich vorhabe, die App kostenlos zu veröffentlichen. Ich erkenne, dass eine Implementierung, die in Bezug auf CPU-Zyklen und RAM-Auslastung besser funktioniert (z. B. etwas kompiliert geschrieben in C#?) Teurere Hosting-Lösungen erfordern als sagen, ein LAMP-Server könnte tatsächlich am Ende teurer in Bezug auf $ /anfordern.

Ich möchte auch meine Implementierung skalierbar in dem seltenen Fall, dass viele Leute beginnen, die App zu verwenden. Verändert das Nutzungsvolumen das Verhältnis von Leistung und Preis zu einer anderen Implementierung? I.e. wenn ich 1k Anfrage/Tag habe, könnte es billiger sein, PHP + MySQL zu verwenden, aber 1M Anfragen/Tag könnten etwas anderes billiger machen?

Zusammenfassend, wie würden Sie eine (ziemlich einfache) entfernte Datenbank implementieren, auf die remote mit HTTP (S) zugegriffen wird, um Hosting-Rechnungen zu minimieren? Welche Art von Hosting-Lösung und welche Art von Plattform/Sprache?

UPDATE: pro Karls Vorschlag habe ich versucht: Ruby (Sprache) + Sinatra (Framework) + Heroku (App-Hosting) + Amazon S3 (statische Datei-Hosting). Für alle, die das lesen, die das gleiche Dilemma haben wie ich, ist dieses Setup erstaunlich: mühelos skalierbar (bis "unendlich"), erschwinglich, einfach zu benutzen. Danke Karl!

Ich kann die DB-Spezifikationen noch nicht kommentieren, weil ich das noch nicht implementiert habe, obwohl CouchDB und MongoDB für meine einfachen Abfrageanforderungen eine gute Wahl darstellen und in Heroku integriert sind.

+0

Hallo Codenoob. Gibt es Neuigkeiten zu diesem Thema? Hast du deine Lösung abgeschlossen? Hast du die Zeit probiert App Engine? – j7nn7k

+0

Hey Johe, ich habe es implementiert und arbeite jetzt am iOS Client. Ich habe Ruby mit Sinatra auf Heroku mit statischen Dateien auf Amazon S3 und einer MongoDB-Datenbank bei MongoHQ verwendet. Es war sehr einfach, ein REST-konformes Protokoll mit Sinatra zu implementieren, und alles ist extrem skalierbar, und ich bezahle nur für die Ressourcen, die ich verwende. Ich habe die App-Engine nicht ausprobiert, weil das für mich perfekt funktioniert hat. – lms

Antwort

5

Haben Sie darüber nachgedacht, Sinatra zu verwenden und auf [Heroku] zu hosten? Genau das zeichnet Sinatra aus (REST-Dienste). Und Hosting mit Heroku kann kostenlos sein, abhängig von der Menge der Daten, die Sie speichern müssen. Behalten Sie einfach alle unterstützenden Dateien (Bilder, Javascript, CSS) auf S3. Sie werden in der Wolke sein und in kürzester Zeit fliegen.

Das passt vielleicht nicht zu Ihren PHP-Wünschen, aber ehrlich gesagt, es wird nicht einfacher als Sinatra.

+0

Link zu Heroku: http://heroku.com/ – Karl

+0

Das sieht sehr interessant aus, ich werde es versuchen. Ich denke, ich kann jetzt mit dem kostenlosen Blossom-Service durchkommen und für den Fall, dass die Anforderungen der App steigen, scheinen die Preise sehr vernünftig zu steigen. Ich könnte die google app engine in Zukunft trotzdem ausprobieren. Danke für die Information! – lms

0

Es kommt zu einem Kompromiss zwischen Kosten und Erfahrung.

Wenn Sie das Know-how haben, würde ich definitiv in irgendeiner Form der Cloud-basierten Infrastruktur, so etwas wie Google App Engine aussehen. Welche Cloud-Plattform Sie verwenden, hängt davon ab, welche Erfahrung Sie mit verschiedenen Sprachen haben (AppEngine funktioniert z. B. nur mit Python/Java). Im Allgemeinen haben skalierbare Cloud-basierte Plattformen jedoch mehr "gotchas" und benötigen mehr Know-how, da sie speziell auf High-End-Skalierbarkeit ausgelegt sind (und in einigen Fällen Kenntnisse der Konzepte auf Unternehmensebene erfordern).

Wenn Sie so schnell und einfach wie möglich am Laufen sein wollen, würde ich persönlich für eine CakePHP Installation gehen. Richten Sie die Modelldaten so ein, dass sie die grundlegenden Entitäten darstellen, die Sie verwalten, und verwenden Sie dann CakePHPs wundervolle Convention-liebende Magie, um CRUD-Updates auf diesen Modellen mühelos verfügbar zu machen!

+0

Ich habe mich entschieden, jetzt mit Sinatra und Heroku zu gehen, weil es sehr einfach scheint, das zu tun, was ich will. Ich habe GAE angeschaut und habe schon Erfahrung in Java, also werde ich das auch in Zukunft versuchen. Danke für den Tipp! – lms

0

Die Technologie, die Sie zum Implementieren der REST-Services verwenden, hat einen weitaus geringeren Einfluss auf die Leistungs- und Hostingkosten als die Verwendung von HTTP. Der Nutzen von HTTP ist weit mehr als nur das Erlernen der Verwendung von GET, PUT, POST und DELETE.

Verwenden Sie die serverseitige Technologie, die Sie bereits kennen, und verbringen Sie Zeit mit dem Lesen von RFC2616. Sie sparen sich eine Menge Zeit und Geld.

0

In Ihrem Fall der Datenbankserver, auf den bei jeder Anfrage zugegriffen wird. Selbst wenn Sie eine Sprache kompiliert haben (z. B. C# oder Java), ist dies nicht sehr wichtig (es sei denn, Sie führen Datenumwandlung oder -verarbeitung durch).

Also DB-Server müssen gut skalieren. Hier sollte die Auswahl der Sprache und DB mit dem Host-Betriebssystem gut konfiguriert sein.

Kurz gesagt, PHP + MySQL ist gut, wenn Sie JSON-Strings senden/empfangen und mit minimaler Datenverarbeitung in DB speichern/abrufen.

Die nächste App wird populär, und wenn Ihre App keine häufigen Aktualisierungen vorhandener Daten erfordert, können Sie diese Daten in sehr hochskalierbare Datenbanken wie MongoDB (JSON-freundlich) verschieben.

Verwandte Themen