From: John Wilger Date: 2006-12-22T03:30:07+09:00 Subject: Re: does Ruby generate WINDOWS and dialog boxes? On Dec 20, 10:30 pm, David Vallner wrote: > Load distribution. The only thing you need to ever make scalable is the > database and the access to it, and can run it on a relatively > underpowered machine - and if you play it right, with less bandwidth > requirements too (you only ever transfer resources like images etc. > during a client update, which can be yet optimised by using something > like Jigsaw, or SVN as mentioned for text resources). It's not a common > architecture, but not one without any sense to it whatsoever. We may have to agree to disagree here, but I'm going to say that there is absolutely no benefit to this architecture, that can outweigh the detriments of both the increased maintenance and the decreased security. If you really need to distribute load, a better route to take would be a client/server architecture where you have an intelligent app server -- not just a database connection -- that exposes services (perhaps REST-style web services). You can do a lot of the heavy lifting on the clients, but you can still manage security and client updates intelligently from the server. While Ruby/Rails may be a great choice for the server, I would probably not use Ruby for the client in most situations. Not that I don't love Ruby, of course -- I just wouldn't want to have to deal with keeping both Ruby, and library dependencies, and the client application up to date on every machine that was using the program. Most likely, I would go with something like Flex[1] for the client, since it's relatively painless to distribute upgrades that way. I'm currently using Flex for the client end of a large workflow automation tool that we're building at work, and I have to say that I would never want to go back to using HTML interfaces to create web-based /applications/ again. [1] http://www.adobe.com/products/flex/ (note: Flex Builder costs money, but all you really /need/ is the SDK which is free as in beer)