tags:

views:

86

answers:

3

All, I'm beginning to explore what frameworks (open source) and tools for building web applications. What should I select and learn for the following layers,

Layer 1 Client side JavaScript / AJAX library or framework that will invoke REST style services provided by layer- 2

Layer 2 Provides a framework to rapidly create REST style services out of existing applications and out of a NoSQL document oriented database provided by layer-3. I need this layer in cases where I need to expose REST style services out of my traditional apps and RDBMS.

Layer 3 Which NoSQL to use - CouchDB or MongoDB that would work well with layer-2?

Will I need a MVC framework like RoR or a web/component framework like Wicket? Am I missing anything?

I also need recommendations for which tooling/IDE (and associated plugins) for the development environment. Thanks in advance for your answers/thoughts.

+1  A: 

The task you're trying to accomplish determines the technology you use.

Jay
I understand everything is dependent on what you are trying to build, I very well understand it is dependent on the technology stack. The question was not hard at all. I wanted to do a poll and get a feel from what everyone else is doing.Let me rephrase my questions and add this in the end, - "If I were to build a small to medium scale web application (used by internal users, no more than 1000), that would need to do typical CRUD operations, provide user with good UI experience etc. Finally say I want to select between Java/Groovy Vs Ruby/Rails tech stack.
Development by popularity contest is probably not a good idea either. Do your design, read the specs, check the claims by the software providers, and go for it!
Jay
A: 

If you're interested in the .NET platform, consider:

Arguably, ASP.NET MVC IS a REST endpoint of sorts, so you could skip the WCF services.

All the above can be leveraged with free tools, including:

p.campbell
To recommend technology without knowing any requirements is just crazy talk.
Darrel Miller
@Darrel: thanks, have a nice day! :)
p.campbell
I cannot add a requirements document here and seek opinions. If I were to build a small to medium scale web application (used by internal users, no more than 1000), that would need to do typical CRUD operations, provide user with good UI experience etc.
P.Campbell - Thanks for the response and suggestions. While .NET platform is interesting, I'm interested in a Rails/Java/Groovy kind of an environment.
@user456563: gotcha. Thanks anyway!
p.campbell
+3  A: 

We've had pretty decent luck using a Java stack:

  1. For the presentation, we use jQuery and jQueryUI, with Freemarker for XHTML/CSS templating, including to invoke REST web services through various UIs.

  2. Restlet (www.restlet.org) is a wonderfully rich framework for crafting REST web services in Java. We decided to use it on a major product after it was strongly recommended to us by the engineering director of a top 10 e-commerce site in the US. And everything he said about it was true.

  3. Unless you know you're going to face a really large amount of write volume, you're probably best off using one of the tried and true SQL databases supporting ACID transactional guarantees. We used Oracle, then switched to PostgreSQL, using the MyBatis (formerly iBatis) SQL Mapper to shield our code from the details of the database. With the advent of 64-bit addresses and scads of inexpensive DRAM, plus SSDs, these old workhorses do scale quite high.

  4. If you are anticipating very large amounts of writes, by all means consider a so-called "NoSQL" database. I heard very good things about Vertica from the top network ops folks at a major technology company last week. MongoDB and CouchDB both look interesting. Or you may be able to leverage persistent distributed cache technology like Redis or EhCache to offload a traditional database.

Jim Ferrans