This is another post on the series of articles on best practices. In this one, I'll present the best practices that should be followed while working with ASP.Net MVC framework.
What is the MVC design pattern all about?
First off, let's take a quick tour of the basics. What is the MVC (Model View Controller) design pattern all about? Why is it needed, anyway? Well, the user interface often contains a lot of cluttered code primarily because of the complicated logic it needs to handle. The presentation patterns are designed primarily with one objective in mind: reducing the complex code in the presentation layer and making the code in the user interface clean and manageable.
The MVC framework helps you build applications that are easier to test and maintain. It comprises of three major components, namely, the Model (represents the application's data and business logic), the View (this represents the presentation layer) and the Controller (this typically represents the business logic of your application). The MVC design pattern enables you to isolate the concerns and makes your application's code easier to test and maintain.
You should delete the demo code files -- the AccountController.cs file as you wouldn't need it anyway. The AccountController is created by default and is not needed -- just delete it! You should also reduce the coupling between your controllers and other dependencies like data access component, exception and logging blocks, etc. You controllers should be as slim as possible and contain much less code. Ideally, you should just delegate the control flow to some business logic component inside your controller class. The controller in an ASP.Net MVC application should be isolated from the data access layer -- the controller is responsible to render the appropriate view at runtime based on certain action.
Bundling and minifying the script and CSS files
You should group resources your application needs to use like CSS files into one downloadable resource. This process is also known as bundling. You should also minify the scripts and CSS files you would use to remove the unnecessary characters, comments and white space characters.
The following code snippet illustrates how you can create a bundle object for the CSS your application needs to use.
public static void RegisterBundles(
The following code shows how you can bundle the script files you need to use in your application.
Note how the ScriptBundle class is used to bundle the script content. Similarly, the StyleBundle class (as shown in the earlier example) is used to bundle the css content we discussed earlier.
You should also turn off the checking of routes unless it is absolutely needed so as to eliminate the unnecessary processing overheads involved.
Cache your data
To improve the performance and responsiveness of your application, you can take advantage of caching. Caching is a technique that enables you to store relatively stale data in the memory so as to reduce the network bandwidth consumption. The following code snippet shows how you can use caching in your controllers.
public class IDGController : Controller
public ActionResult Index()
You should also cache frequently accessed pages that contain shared data and don't need to be authorized. The following code snippet illustrates how you can do this.
[OutputCache(Duration = 3600)]
public ActionResult Index()
return View("Index", myDataObject);
The MVC design pattern helps enforcement of a clean separation of concerns amongst the models, views and controllers within your application. This helps your code to be easily tested and maintained. I have discussed some important points that you can consider when working with ASP.Net MVC to build applications that are high performant, easier to test, maintain and scale. I'll discuss more on ASP.Net MVC in the forthcoming posts here. So, stay tuned!
This article is published as part of the IDG Contributor Network. Want to Join?