views:

233

answers:

2

I am in the planning phase of a new multi-user client/server app using Flash via Flex and AIR. I am trying to decide which web platform/stack is the best suited for this?

I have used RoR in the past, but as i understand, RoR is single-threaded, and is therefore not the ideal choice for handling potentially thousands of simultaneous requests.

I have done some reading about Scala and Lift and that is an intriguing option, but i was wondering if there are other languages/frameworks out there that would work well for my project?

+1  A: 

i don't know too much about the Scala and Lift ... if you wanna stick to ruby, check out merb ... it seems it will be merged with RoR anyways, so you could maybe just wait for the next version ... :)

you might want to take a look at haXe (a high level language, that targets many platforms, as AVM1, AVM2, PHP, c++ ectc.) and neko (a server VM available as compiler target for haXe), as well as haXe remoting (you can simply compile your haXe net-code to an swc and stick to AS3/mxml for the rest) ... neko scales quite well ... it's very light and extensible ... there are many ways of using it as server platform, but it also allows you writing everything from scratch, since the API exposes low level access ...

edit: you should rather use mod_tora, since it has lower footprint ... for the other things mentioned, just check out the mailing list ... there is a "simple persistent objects database" layer, that could help ... also there is some "full persitent objects database" floating around ... and for routing, there are also multiple solutions ... don't forget to check out haxelib ... you can find quite a lot of reusable stuff there ...

back2dos
i am planning to use haXe for the client side, and per your suggestion, i took a quick look at neko and mod_neko, but it seems to be lacking some of the higher level frameworks that i've come to expect with other platforms (no Routing, ORM, etc). I took a look at merb, and i like what i saw there. Will investigate that option further. Thanks for your response.
Jason Miesionczek
A: 

I would recommend using lighttpd to serve your static content. Is your AIR app expected to interact with the server it was served from our consume other services provided by other Saas sites? RoR or Scala or Lift are great if you want to keep your contorller (of MVC) on the server. With AIR, I don't think this is the way you want to go since it increases the complexity of controller interaction plus you have to maintain state in two places.

If your client/server interaction model is going to be simply consuming REST services (although REST support is kinda jenky in Flex so you'll likely need to write your own socket library to support other REST verbs and to gain access to the headers) then your backend server becomes much less complicated. You only need to deal with the request/response of an HTTP request.

Okay, so what I would recommend.

CherryPy for Python Servlets/Jetty for Java

Make sure you pick a caching middle tier, like memcached or tokyotyrant (both support all the environments mentioned in my post and others).

Noah Campbell