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
