.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
 
Sign In
Register
 
Win Surprise Gifts!!!
Congratulations!!!



Home >> Articles >> Architecture/Pattern >> Post New Resource Bookmark and Share

 Subscribe to Articles

Unity framework with ASP.Net MVC Framework

Posted By :Dhananjay Kumar      Posted Date :10/12/2009   Points :25   Category: Architecture/Pattern    URL: http://www.dhananjaykumar.net
 


Unity framework with ASP.Net MVC Framework

Objective:

This article will explain step by step that how to inject dependency using UNITY framework in ASP.Net MVC Application

Step 1:

Create a MVC application

image1.gif

Step 2:

Add Unity references to the MVC application.

Step 3:

Idea here is to create a custom controller factory. This custom controller factory will create the controller and inject the dependencies in that. Add a class to the project. Feel free to give any name; here name of the class is CustomUnityControllerFactory.

image2.gif

Extend this CustomUnityControllerFactory class from DefaultControllerFactory class.

image3.gif

Create reference of IUnityContainer. Don't forget to add include namespace Unity.

image4.gif

Create the constructor for CustomUnityControllerFactory and pass reference of Unity Container in that.

image5.gif

Override GetControllerInstance of DefaultControllerFactory. Here we will pass type of the controller , which we are going to create. In parameter of overrideen function we are passing type of the controller to be instanciated.

image6.gif

So the complete CustomUnityControllerFactory class will look like below.

CustomUnityControllerFactory.cs

image7.gif

Step 4
:

Now we need to do something at start up of the application. For that open Global. asax file. We need to modify Application.Start() method.

  • Create instance of IUnityContainer.
  • Create instance of CustomUnityControllerFactory and pass instance of unity container in that.
  • Set the CustomUnityControllerFactory as the default controller factory to be used. For this call Current method on ControllerBuilder and pass instance of CustomUnityControllerFactory in that. (see below code in blue)
  • Compile the application.

    image8.gif


    Step 5:

    Now it is time to check that, how Custom Unity Container Factory is working. To test that, we will create a service interface and concrete service class in Model.

    • Right click on Model and add an interface

      image9.gif

      Interface contains the below code.

      image10.gif
       
    • Right click on Model and add a class and implement the Message() method.

      image11.gif

      Class contains the below code

      image12.gif

    Step 6:

    Go to Application_Start() and register the type.

    image13.gif

    So, now the complete code at Application Start () will look like

    image14.gif

    Step 7:

    Now put a breakpoint at constructor of HomeController and run the application. We could see while debugging that dependency has been injected.

    image15.gif

    Now, you can see that dependency has been injected. Now normal routing will process. For Routing and other details of MVP read my articles here.

    Conclusion:

    I showed how to inject dependency using Unity in MVC application. 



  • Featured Articles


    Best Practices No 5: - Detecting .NET application memory leaks
    Memory leaks in .NET application have always being programmer's nightmare. Memory leaks are biggest problems when it comes to production servers. Productions servers normally need to run with least down time. Memory leaks grow slowly and after sometime they bring down the server by consuming huge chunks of memory. Maximum time people reboot the system, make it work temporarily and send a sorry note to the customer for the downtime. ... Read More
    .NET Best Practice No: 1:- Detecting High Memory consuming functions in .NET code
    One of the important factors for performance degradation in .NET code is memory consumption. Many developers just concentrate on execution time to determine performance bottle necks in a .NET application. Only measuring execution time does not clearly give idea of where the performance issue resides. Ok, said and done one of the biggest task is to understand which function, assembly or class has consumed how much memory. In this tutorial we will see how we can find which functions consume how much memory. This article discusses the best practices involved using CLR profiler for studying memory allocation.... Read More
    How to improve your LINQ query performance by 5 X times ?
    LINQ has been criticized by many early adopters for its performance issues. Well if you are just going to drag and drop using DBML code generator I am sure you will land up in to mess. Try doing this make a simple LINQ to SQL project using DBML and see your SQL profiler, I am sure you will never like to touch DBML code generator again. ... Read More
    Responses

    No response found. Be the first to respond this post

    Post Comment
    You must Sign In To post reply
    Find More Articles on C#, ASP.Net, Vb.Net, SQL Server and more Here

    Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend