Re: My Space - Making .NET a Star Performer
github.com
github.com
But really, why is this argument even important? .NET can scale, if you toss out the religious arguments then you realize that just about anything can scale if you do it right. Which is the key point isn't it? The great startup lesson is that the PEOPLE are far more important than the technology.
I just wanted to share what I learnt in my research and provide as much awareness and guidance as possible so that .NET developers can use this as an entry/jump point into their own research.
Also in a round-about way prove that it is possible to do in .NET and what technologies you should look at to get there. Pure, free-flowing guidance / research on this topic is not always plentiful.
The web forms model has been a huge issue for programmers who are not mindful of its consequences and I'm glad MVC is making headway. I'm also happy to see MS starting to think about more developer oriented tool sets with projects like Nuget and Entity Framework Code First.
Scaling to higher levels is always going to require an awareness of design and architecture more fundamental than knowing any particular technology well.
Part of the problem is TDD, people see the green bars fill but the customer regects it because guess what. In real world usage we arent running the method once, we are running it millions of times.
If you know a given routine will be run a lot, then some optimization right off the bat is a good idea.
Now, that "knowing" is a little more difficult, but comes with user feedback and experience.
It took me a couple days of coding to have an async socket server (using .net async IO) up and running. It was so much easier.
Contrast that with several weeks spent learning WCF and then searching through blog posts to find the correct config example to handle problem after problem.
Caveat: I don't need to switch between different providers, manage security, etc, etc which WCF can do out of the box. I just needed a way to get data from a long running server to a web page. I just wanted some simple IPC, which WCF is not.
I need to write up a full post-mortem on this at some point, but I just needed to get that off my chest.
That said, after you get a few basics down, it really is rather straightforward. The gain for me is not having to manually write code to deal with security/encoding/serialization/exceptions. I mean, you define an interface, slap some attributes on, add 5 lines of config, another 5 to start the server, and that's pretty much it.
But you're right it should be included - care to contribute a piece on the topic?
I am curious about this, can you provide a link or reference with more information?
"... If you’re curious to see how much faster ASP.NET requests execute without the thread switch, you can set the value to 0. This will cause the request to execute on the IIS I/O thread, without switching to a CLR Threadpool thread. ..."
Of course you would only ever set this if you are really doing every bit of I/O asynchronously in your application. Otherwise bad, bad things would happen (deadlock under load).
However I very much welcome any clarifications/contributions on this topic - please do send me a pull-request :)