2009-06-11 6 views
0

Ich bin in der Planungsphase einer neuen Multi-User-Client/Server-App mit Flash über Flex und AIR. Ich versuche zu entscheiden, welche Webplattform/welcher Stack dafür am besten geeignet ist.Der am besten skalierbare Web-Stack für die Flash/Flex/AIR-Hochleistungs-App?

Ich habe RoR in der Vergangenheit verwendet, aber wie ich verstehe, RoR ist single-threaded, und ist daher nicht die ideale Wahl für die Behandlung von potenziell Tausende von gleichzeitigen Anfragen.

Ich habe etwas über Scala und Lift gelesen und das ist eine faszinierende Option, aber ich frage mich, ob es andere Sprachen/Frameworks gibt, die gut für mein Projekt funktionieren würden?

+0

Antwort aktualisiert ... greetz – back2dos

+0

Sie sollten beachten, dass Lift nicht auf mehrere Maschinen skalierbar oder im Sinne von REST skalierbar ist. Es wurde entwickelt, um schwere AJAX- und Comet-basierte Anwendungen mit vielen aktiven Sitzungen innerhalb eines einzelnen Knotens zu unterstützen. Siehe diese Diskussionen für Details: SO Frage "Warum ist das Lift-Web-Framework skalierbar?" [http://stackoverflow.com/questions/648964/why-is-the-lift-web-framework-scalable] "Aufzug, Staat und Skalierung" vom offiziellen Aufzug blog [http://lift.la/lift-state-and-scaling] – CheatEx

Antwort

1

ich weiß nicht zu viel über die Scala und Lift ... wenn du Rubin bleiben willst, schau mal merb ... es scheint, dass es mit RoR sowieso verschmolzen wird, also könntest du vielleicht einfach auf die warten nächste Version ... :)

Sie vielleicht einen Blick auf haXe nehmen wollen (eine Hochsprache, die viele Plattformen abzielt, wie AVM1, AVM2, PHP, C++ ectc.) und neko (ein Server VM verfügbar als Compilerziel für haXe), sowie haXe remoting (du kannst deinen haXe net-code einfach zu einem swc zusammenstellen und für den rest bei AS3/mxml bleiben) ... neko skaliert ganz gut ... es ist sehr leicht und erweiterbar ... es gibt viele Möglichkeiten, es als Server-Plattform zu verwenden, aber es erlaubt Ihnen auch, zu schreiben alles von Grund auf neu ng, da die API-Zugriff niedrigen Niveau aussetzt ...

bearbeiten: Sie lieber mod_tora verwenden sollten, da sie geringere Stellfläche hat ... für die anderen Dinge erwähnt, nur Sie die Mailing-Liste ... es gibt eine "einfache persistente Objekte Datenbank" Schicht, die helfen könnte ... auch gibt es einige "voll persistente Objekte Datenbank" herumschwimmen ... und für das Routing gibt es auch mehrere Lösungen ... nicht vergessen haxelib zu überprüfen ... Sie es eine ganze Menge von wieder verwendbaren Sachen finden können ...

greetz

back2dos

+0

Ich plane, haXe für die Client-Seite zu verwenden, und auf Ihren Vorschlag hin habe ich einen kurzen Blick auf neko und mod_neko geworfen, aber es scheint einige der höheren Frameworks zu fehlen, die ich habe mit anderen Plattformen gerechnet (kein Routing, ORM, etc). Ich habe Merb angeschaut, und mir gefällt, was ich dort gesehen habe. Wird diese Option weiter untersuchen. Vielen Dank für Ihre Antwort. –

0

Ich würde empfehlen, lighttpd zu verwenden, um Ihren statischen Inhalt zu bedienen. Wird von Ihrer AIR-App erwartet, dass sie mit dem Server interagiert, den sie von anderen SaaS-Websites bereitgestellt hat? RoR oder Scala oder Lift sind großartig, wenn Sie Ihre Contorller (von MVC) auf dem Server behalten möchten. Mit AIR glaube ich nicht, dass dies der Weg ist, den Sie gehen wollen, da es die Komplexität der Controller-Interaktion erhöht und Sie den Status an zwei Stellen beibehalten müssen.

Wenn Ihr Client/Server-Interaktionsmodell einfach REST-Dienste in Anspruch nimmt (obwohl REST-Unterstützung in Flex ein wenig ist, müssen Sie wahrscheinlich Ihre eigene Socket-Bibliothek schreiben, um andere REST-Verben zu unterstützen und Zugriff darauf zu erhalten die Header) dann wird Ihr Backend-Server viel weniger kompliziert. Sie müssen nur die Anfrage/Antwort einer HTTP-Anfrage bearbeiten.

Okay, also was ich empfehlen würde.

CherryPy für Python Servlets/Anlegestelle für Java

Stellen Sie sicher, einen Caching-Middle-Tier wählen, wie Memcached oder tokyotyrant (beide unterstützen alle in meinem Beitrag erwähnt Umgebungen und andere).