Anatomy of a MVC Request Response



Diagram for MVC Request Response

To be short and precise:
  • When a user sends a HTTP request through a browser, the controller which is the traffic hub receives the request and interacts with model to perform the operation.
  • Model perform the business operation to complete the task and respond back to controller.
  • Then the controller selects a View and passes requested data to the view to generate a page.
  • The View engine reads view template and dynamically generates HTML that is sent to the user.

ActionResult Types in MVC


Following table list ActionResult Types in MVC:


TypeHelperMethodDescription
ContentResultContent()Raw text data
EmptyResult--Returnsnothing
FileResultFile()Base class to send file
HttpUnauthorizedResult--Returns HTTP 401
JavaScriptResultJavaScript()Returns and executes script
JsonResultJson()JavaScript Object Notation
PartialViewResultPartialViewHTML snippet
RedirectResultRedirect()Redirect to URL
RedirectToRouteResultRedirectToRoute()
RedirectToAction()
Redirect to MVC route or action
ViewResultView()Full HTML page

The Tenets of MVC


Following are the tenets of MVC:


  • Separation of concerns
                      Foundation concept of a good application is that it should be modularized. So that each module focuses on its own module. In MVC, Model knows nothing about the View and the Controller. The View knows nothing about the Controller and so on. The more you keep the application separate the more it will perform better and it will be more maintainable. That's separation of concerns.
  • Convention over configuration
                    The ASP.NET MVC eliminates the need for extensive configuration settings by following various conventions. Example would be in MVC project has separate folders for Module, Views and Controller. Convention locations to locate code files that implement those different components. By keeping those component in convention folders you don't have to make extensive configuration changes.
  • Keep it DRY: Don't Repeat Yourself
                   DRY is one of the design principle that MVC embraces. The point here is you should reduce the duplication of code and logic which help in making the application faster as well as easier to maintaining. For example you can encapsulate chunk of reusable user interface code in partial view temples which are similar to asp.net user controls. 
  • Be helpful, but get out of the way
                 MVC allows you to have more control over HTML then ASP.NET web pages. It help you to fully customize the HTML view as per your need.

  

Quick look at "New Features of ASP.NET MVC 4.0 Framework"



The ASP.NET MVC framework provides the following features:

  • Separation of application tasks (input logic, business logic, and UI logic), testability, and test-driven development (TDD). All core contracts in the MVC framework are interface-based and can be tested by using mock objects, which are simulated objects that imitate the behavior of actual objects in the application. You can unit-test the application without having to run the controllers in an ASP.NET process, which makes unit testing fast and flexible. You can use any unit-testing framework that is compatible with the .NET Framework.

  • An extensible and pluggable framework. The components of the ASP.NET MVC framework are designed so that they can be easily replaced or customized. You can plug in your own view engine, URL routing policy, action-method parameter serialization, and other components. The ASP.NET MVC framework also supports the use of Dependency Injection (DI) and Inversion of Control (IOC) container models. DI enables you to inject objects into a class, instead of relying on the class to create the object itself. IOC specifies that if an object requires another object, the first objects should get the second object from an outside source such as a configuration file. This makes testing easier.

  • Extensive support for ASP.NET routing, which is a powerful URL-mapping component that lets you build applications that have comprehensible and searchable URLs. URLs do not have to include file-name extensions, and are designed to support URL naming patterns that work well for search engine optimization (SEO) and representational state transfer (REST) addressing.

  • Support for using the markup in existing ASP.NET page (.aspx files), user control (.ascx files), and master page (.master files) markup files as view templates. You can use existing ASP.NET features with the ASP.NET MVC framework, such as nested master pages, in-line expressions (<%= %>), declarative server controls, templates, data-binding, localization, and so on.

  • Support for existing ASP.NET features. ASP.NET MVC lets you use features such as forms authentication and Windows authentication, URL authorization, membership and roles, output and data caching, session and profile state management, health monitoring, the configuration system, and the provider architecture.
Source: MSDN

In simple words "Introduction to ASP.NET MVC"


The Model View Controller (MVC) architectural pattern separates an application into three main components: Model, View, and Controller.

ASP.NET MVC Pattern

The ASP.NET MVC framework provides an alternative to the ASP.NET Web Forms pattern for creating Web applications. The ASP.NET MVC framework is a lightweight, highly testable presentation framework that (as with Web Forms-based applications) is integrated with existing ASP.NET features, such as master pages and membership-based authentication. The MVC framework is defined in the System.Web.Mvc assembly.

MVC is a standard design pattern that many developers are familiar with. Some types of Web applications will benefit from the MVC framework. Others will continue to use the traditional ASP.NET application pattern that is based on Web Forms and postbacks. Other types of Web applications will combine the two approaches; neither approach excludes the other.

The MVC framework includes the following components:

·    Models: Model objects are the parts of the application that implement the logic for the application's data domain. Often, model objects retrieve and store model state in a database. For example, a Product object might retrieve information from a database, operate on it, and then write updated information back to a Products table in a SQL Server database.

In small applications, the model is often a conceptual separation instead of a physical one. For example, if the application only reads a dataset and sends it to the view, the application does not have a physical model layer and associated classes. In that case, the dataset takes on the role of a model object.

·     Views: Views are the components that display the application's user interface (UI). Typically, this UI is created from the model data. An example would be an edit view of a Products table that displays text boxes, drop-down lists, and check boxes based on the current state of a Product object.

·    Controllers: Controllers are the components that handle user interaction, work with the model, and ultimately select a view to render that displays UI. In an MVC application, the view only displays information; the controller handles and responds to user input and interaction. For example, the controller handles query-string values, and passes these values to the model, which in turn might use these values to query the database.

The MVC pattern helps you create applications that separate the different aspects of the application (input logic, business logic, and UI logic), while providing a loose coupling between these elements. The pattern specifies where each kind of logic should be located in the application. The UI logic belongs in the view. Input logic belongs in the controller. Business logic belongs in the model. This separation helps you manage complexity when you build an application, because it enables you to focus on one aspect of the implementation at a time. For example, you can focus on the view without depending on the business logic.

The loose coupling between the three main components of an MVC application also promotes parallel development. For example, one developer can work on the view, a second developer can work on the controller logic, and a third developer can focus on the business logic in the model.

Recent Posts