When to use Node.JS

Node.JS is really cool. I like how easy it is to setup an application and get a website running. Its multi-platform support is great, and I hear that it scales pretty good, too. There seems to be a huge trend where everyone wants to use Node.JS, which is pretty cool. However, I’m not entirely certain that it should be used in all projects, just yet.

I’ve used Node.JS maybe 6 times now. In a couple projects it worked out really good. About 50% of the time it worked out really well. The other 50%, however, I found that Node.JS just isn’t developed enough to support all of the needs of every large-scale application.

Node.JS has a serious lack of XML support, which seriously limits the interoperability that can be supported. Its great if all you have to do is RESTful gets, posts (etc.). As soon as you need to interact with a service that does something with XML (like a soap service – see “Node.JS and SOAP Services“), you have to do some serious work to get things functioning.

The other major issue I have is database support. Node.JS and MongoDB (in my opinion) are meant to be used together. MongoDB is a document-driven JSON database, not a relational database. Document-driven databases can be really cool, but have their limitations on the type of logic they can support. As far as I know, MongoDB does not have any good SQL drivers, and even if it did, I imagine you would run into more issues always having to use asynchronous operations on something like a SQL Server database.

When you are starting your project, I suggest you don’t just assume that Node.JS will work for you… I would sit back and consider how complex your application could potentially get. If your application will ever make use of XML (which many service-oriented applications still use), or have complex-enough logic to require relational queries, then I would suggest considering an application hosting framework that has been around a little longer (such as C#.NET WebAPI – wish is great – or Java Web Services).

Leave a Reply

Your email address will not be published. Required fields are marked *