Node.cs - a C# version of Node.js
github.com
github.com
Looking at the use of libtask in mongrel2 inspired me to play around with the idea of coroutines in C#. The await keyword makes my latest iteration quite small and nice to use. https://github.com/AustinWise/LibTaskNet
SharpKit[1] is probably the most mature.
And a simple example of using it (for a hello world benchmark): http://www.devthought.com/2012/02/08/node-http-hello-world-s...
If you're desperate for some kind of evented web framework in C#, check out SignalR - https://github.com/SignalR/SignalR
The buzzwords are web sockets, comet, ajax push, etc.
The output of a really simple ASP.NET MVC hello-world app is measured in a couple of hundred requests per second without even touching the database. If you do the same on top of Node.js or Netty or Twisted, you're speaking about tens or even hundreds of thousands of requests per second.
For anything non-trivial I'll bet that a normal .net
application will blow this out of the water in terms of
performance.
That's not true, not even if you're comparing ASP.NET with normal web frameworks, such as Ruby on Rails.You can get a lot of performance out of ASP.NET, but to do that you've got to rely on pretty ugly optimizations. To get a taste of what I'm talking about, check out this slightly old, but still relevant presentation: http://blog.whiletrue.com/2009/04/aspnet-mvc-performance/
TL;DR the author went from 5.9 requests / second to 390 requests / second, but to do that they had to cut out many nice features of ASP.NET MVC that used runtime introspection and they also added caching, something which you do anyway in any other web framework available.
Again, for some applications you can go fully async and speak about tens or hundreds of thousands of requests per second served by the same server.