I have used c# extensively over the last 8 years and am currently managing 
a project where we essentially built prototypes in webapi (making heavy use 
of async) and node.  We ultimately decided to move the project to node for 
the development phase.  Some important points we came across:

1) speed - webapi was actually about 10% faster for up to about 15 
concurrent connections in our load testing and as the concurrent 
connections went up (we tested up to 250 concurrent) the difference came 
down to essentially 0.  This, of course was specific to our use case and 
others will get different mileage, but on the whole speed and concurrency 
issues between the 2 platforms appear negligible.  One important point is 
that we made heavy use of the async libraries in the latest c#.  There is 
absolutely no way we could have achieved these comparable numbers in c# 
without them.

2) maturity - obviously c# wins this hands down.  We have to program 
against "legacy databases" - mysql, oracle and ms sql, and the maturity of 
the db drivers vs those that exist in the node world just can not be 
compared.  At this point in their life cycle, its hard to hit any type of 
strange issues that require workarounds for the c# drivers.  This is not 
the case in the node world.  Most of the libraries I have worked with are 
still young and I would usually bump into strange issues that took me time 
to work out/debug.  This is not the case for "nosql" drivers we have 
tested.  In the nosql world, the drivers seem to be at a better level of 
parity.

3) async - I really like the async world in node (especially when using 
libraries such as node-async) as opposed to the c# implementation. c# has 
taken a big step forward with the use of await, etc., but it still does not 
feel as baked in and easily understandable as async in node.  Luckily, the 
dev team on this project has very strong javascript chops due to a lot of 
front end dev, so moving to node would not slow people down that much with 
the learning curve.  However, if your team is c# experienced and they don't 
have JS experience, you've got to factor in the cost of the learning curve. 
 If you don't have any c# async experience, strongly consider looking at 
node because I think it might be easier groking node than async in c#.

Alex

On Tuesday, July 3, 2012 1:56:17 PM UTC-4, 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

Reply via email to