On Tue, Jul 3, 2012 at 1:56 PM, Justin Collum <[email protected]> wrote:

> Had a discussion with a friend about  Nodejs the other day. We are both C#
> / MVC / ASP.NET devs, with about 10 years experience. He asked me why
> someone would choose  Nodejs over  IIS + MVC . My argument was 1)
> performance 2) non-blocking IO. Keep in mind that I don't know a lot about
> node, I've built one small site and that's it. So my argument in favor was
> pretty short.
>
> His response: Well, if I need performance on IIS I can just bump up the
> number of threads in the thread pool. Fair point.
>
> After looking into it a bit, it seems that the big difference between  IIS
> + MVC and Node is that each thread can do more in the  Node  world because
> of the non-blocking IO. This cuts down on context switching and makes for
> better overall performance. Add that to the "one language to rule them all:
> coffeescript" factor and it's a clear win to me.
>
> Is that a fair summary of the performance advantages of  Nodejs over IIS +
> MVC? Is there more to it?
>
> I'm aware that you can run Nodejs via IIS but my intuition tells me that
> won't be a good fit.
>
>
This is really an apples vs. oranges debate, as others may have pointed out.

Some questions to ask when choosing a technology of this nature:

1) How quickly do I need to stand up a network application?
2) What's the current developer experience compared to the learning curve
that comes with a new technology?
3) What level of support is required?  Guaranteed or community-driven?
4) What infrastructure is required?  Can we re-use existing hardware?
 Should we go the PaaS route?
... and many more.

Ignoring all this and focusing exclusively on performance... again, the
answer is "it depends."  Where do you need the performance?  Node excels at
file system and network I/O (thanks, libuv!) using a language at a higher
level than C.  If that's the kind of performance you're looking for, Node
is a great candidate.  ASP.NET will do a better job running .NET-based
CPU-intensive tasks from your Web app asynchronously.  The Node approach
would prefer a hybrid: spawning new processes from Node to handle the CPU
intensity while handling the request/response I/O in Node itself.

It's a polyglot programmer's world.  There are plenty of options.  It's
just a matter of choosing the right combination from the buffet... without
suffering the stomach cramps that sometimes follow.

-- 
Kevin Swiber
Projects: https://github.com/kevinswiber
Twitter: @kevinswiber

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to