From my understanding, Ruby is a language that can be used to creat desktop applications. How does this get converted into a 'Web App' - and is a 'Web App' really any different than a Web Site with interactivity?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
This may be completely offsides, since I primarily do ASP.NET in C#, but I think I have still have some insights to the difference between a "web application" and an interactive web site. It is largely an issue of whether you view the website as the product or the interface to the product.
With an interactive site, you're primarily selling the site itself. I'd say this is becoming an unpopular model really but things like a particular company's website might still fall into this model. There can be a database providing content, but generally each page carries a lot of it's content with it, and may require some custom code to achieve the pages goals.
A web application, on the other hand, is really about the service. The web site is a just a form factor for it. Blogs, twitter, stack overflow, CMS, Facebook, and so on are all web applications. Typically there are less pages, more templates. Very little content is actually on a given page, because its all being pumped up from the database.
The tools used and how they are used can also make a big difference. With Ruby or ASP.NET, you can almost pretend like the website isn't even there. You're just processing and pumping data like any application, but the end result is pushed out to a website instead of a form or something. Very often, web applications have APIs and other access points that further distance them from the web. RSS feeds were early examples, but these days you can write a client app that connects directly to Twitter through their API so that the web site itself is never actually involved.
An Application can be further distinguished by its generality. A blog engine is a general purpose web application, that can be applied with different designs and content to create many unique blog sites. A lot of Python or Ruby web apps are like this, and are further distinct from web frameworks. I'm somewhat familiar with Pylons in Python, which is a framework for building apps, which are themselves the frameworks for hosted sites.
I might use Pylons to write the front-end for a general purpose warehouse management system, then sell that application to clients of my own. Their designers might further customize my web application to have some static reporting pages, or some general info pages, and now that's a web site.
So the application really is distinct from the site and the web (and the framework, and the language). It's not a straight division, lots of sites include a mix of static content and dynamic content. And if its a web application then it needs a web site front end to support it (but it can support other front-ends as well, this is the key.)
SHORT VERSION A web application has a web site (which is a front end for the application's functionality) but a web site need not have a full application stack to back it. Its more a matter of intent than actual composition.
At the most fundamental level, they all end up at the same destination: an interactive web site. The main difference is in how you get there.