Under the Covers: Architecture at AnandTech and the Performance of ASP.NET
by Jason Clark on November 27, 2004 12:10 AM EST- Posted in
- IT Computing
Architecting www.anandtech.com
In a previous article about our migration, we discussed briefly what we did to move to ASP.NET. In this edition, we'll go into a bit more detail specifically on the development side.AnandTech consists of a few different applications that make the entire site operate. The main website (www.anandtech.com) serves the articles that we write - this was the first application that we migrated. The migration of the main website was fairly straightforward; we simply ported our ColdFusion code into ASP.NET, learning new syntax as we went. We made use of the code-behind techniques for which ASP.NET is known as we ported parts of the application. And, we wrote a web API similar to our old ColdFusion site to handle back-end logic. Each time that a request begins, we have an init class, which handles instantiating the framework for the page request. The page inherits the web-based API and can then execute methods for the various operations in the pages. This is not much different than most web-based applications of this size.
One thing that we took for granted in our old ColdFusion website was debugging output. ColdFusion has a fairly unique feature that allows you to expose debugging output for a page request. This output consists of the various web-based variables, form, URL and the contents of cookies. It also outputs the SQL syntax submitted to the RDBMS and the various method calls made to any functions in the application. This type of debugging output is extremely helpful when troubleshooting a problem or even when tuning an application, as you can see clearly what the page is doing and how long it's taking to perform each individual method call or query to the database.
So, during our development of the API, we wrote a debug class, which tied into our database class and the OnRequestEnd event from the Global.asax part of the .NET framework. Essentially, it tracked query calls and variables and outputted the data in the OnRequestEnd event of the page request.
26 Comments
View All Comments
rayon - Sunday, November 28, 2004 - link
have you guys considered using the Tracing mechanisms of ASP.NET instead of writing your own debugging class?Hudo - Sunday, November 28, 2004 - link
What's up with the 2 paragraphs per page anymore? I mean before you know it, they're be one sentence per page?!I just found it irritating.
kamper - Sunday, November 28, 2004 - link
"It was music to our ears that [FuseTalk] decided to port their product to ASP.NET."Heh, that sounds a little funny coming from you, Jason. Was it entirely a coincidence?
Thanks for an interesting and informative article. I think that anyone bashing you for it is probably just jealous of your job ;)
Jason Clark - Sunday, November 28, 2004 - link
#7 Yep, it wasn't the first time we've had high throughput. We've done 40+ quite a few times, sometimes they last a good portion of the day.#10 A comparo between languages is a very very touchy subject. You can easily run into legality issues, especially if the test isn't 100% fair on both sides. The trickier part comes in writing code that identically architected on both sides of the fence. The minute you use an optimized method in one language and not another, the test isn't fair. Here we're just showing from a performance metrics point what we've gained and how scalable we are.
#4 I'm sorry you took the article that way. We don't write these for any other reason than to let people see what we do, and hopefully learn from it. We are by no means perfect and have made our own fair share of mistakes. Bad code, poor choices in platform, we've been there and done that. We're learning just as much as anyone else in this industry does.
petrusbroder - Sunday, November 28, 2004 - link
As a regular reader I really enjoy the articles, tests and comments. Sometimes I am just amazed over the fact that the comments tell so much more about the writers themselves.It is as if I were in a waiting room where all those who have problems suddenly woke up and - against their normally well developed ability and well defended right to protect their integrity - started "tell and show".
Every day sombody makes my day. In Sweden we have a saying: "Ett gott skratt förlänger livet" - "a good laugh prolongs the life" - probably I'll get to be at least a 100!
To the writers of the reviews and articles: thanks, I like your work; not only the contenst but the mix as well.
To those who comment: I just love it: sometimes because the comments elucidate technical issues, sometimes because the comments prolong my life!
overclockingoodness - Sunday, November 28, 2004 - link
By competition, you mean get other sites to benchmark their servers (like Toms or Slashdot). I don't think those sites would be interested in this as they have nothing to gain from it. Besides, they would not give access to Jason to their back-end servers to make changes and alter. :)I think we are thinking too far ahead. :-)
Reflex - Sunday, November 28, 2004 - link
I am curious as to what they were using beforehand. I would love to see a 'real world' site such as this compare .NET to some of the competition, although it may be more work than they would be willing to undertake.overclockingoodness - Sunday, November 28, 2004 - link
#7: Sorry about that. It just annoyed me that people can't appreciate the work AnandTech puts into their articles and all their hard work gets labeled as "kissing your own ass". :)#8: Are you saying that you were intentionally trying to be a troll? I don't think it would be boring. People could discuss some things in the comments section without having to read through your and my posts bickering back and forth.
msva124 - Sunday, November 28, 2004 - link
Without at least one good troll, the comments section for this article would be very boring.Ardan - Sunday, November 28, 2004 - link
Whoa, easy there tiger (#6). He's stupid, we know, and probably a troll too. No need to get so feisty about it. I'm sure Jason knows we appreciate the articles, since we are always curious just what keeps this site running consistently well :).I was surprised that you have used 64Mbit/second of throughput for a few hours once...wow!