Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

High traffic ASP.NET MVC coding considerations

I have been asked the following question a couple times and feel like I could have had a better answer for it so I'm relaying it here in hopes of finding more resources, blogs books or pointers on writing scalable MVC3 C# code. If you have any pointers on writing better performing code that is hosted across multiple servers I would greatly appreciate it. For the sake of argument lets say it would be for code that expects upwards of 10-20K hits a day.

Question: What coding considerations do you take into account for writing scalable code that is distributed over several servers?

My gut tells me the answer lies in handling session. My background over the last few years has been in writing services and forms applications not as much for web applications so I'm looking for information that can help me with web application specific development particularly for C# MVC3. Any blogs or books that you suggest I'll definitely look into!

like image 894
likestoski Avatar asked Nov 04 '22 12:11

likestoski


1 Answers

One of the rules for implementing scalable web applications is for them to be stateless. Session is the first thing that should be thrown out of the equation as this is exactly what makes an application stateful. If you have a completely stateless application you could throw hardware when traffic increases and the application will be able to handle it. So start by putting the following line in your web.config:

<system.web>
    <sessionState mode="Off" />
    ...
</system.web>

The problem will now lie on the data tier as this is where the state goes. So in order to improve performance and limit the number of requests to this node would be to use caching. Cache as much data as you can. Preferably store this cache on separate machines than the web servers. Dedicated machines for doing caching.

like image 132
Darin Dimitrov Avatar answered Nov 09 '22 10:11

Darin Dimitrov