About performance, from my POV the differences are the concurrency
models each platform uses.
From one side, IIS has a thread pool, one thread per connection and
blocking IO.
At the other hand, node has one thread, and non blocking IO.
First approach problem is that memory consumption is increased linearly
with each concurrent request because each thread has its own stack. (try
spinning 10k threads)
Also the more the requests, the more the threads running, thus more time
is spent on context switching between these threads instead of doing
something valuable.
The obvious solution would be async & non blocking IO, but it is not so
straight forward to implement it, and any solution wouldnt be cross
platform, but we are lucky all this complexity is abstracted by
libev/libuv. Javascript made a perfect fit for a higher level language
due to language-level anonymous functions & closures which allow you to
write non blocking code easier.
Of course there are very many problems introduced with async &
javascript, eg callback nightmare and you should be aware you will face
this sooner or later.
But it is not all about performance. For me, writing nodejs code feels
exciting and very pleasant! The community involved is very active, eager
to help you, and all of this construct a very balanced ecosystem.
Correct me if im wrong but I believe ASP.NET's community involves old
guys that try out something only if it has the word "enterprise" on the
description.
Whenever i argue with a friend about performance, threads, async, sync
and stuff it always ends up with drama! Best thing you can do is tell
him you feel nice coding node and have him try it out, think of a
project to do together and have fun etc. Im sure next time he will ask
you to write your next code in node ;)
Hope I've helped,
Dan Milon.
On 07/03/2012 08:56 PM, Justin Collum 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.
--
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
--
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