ASP.NET MVC, a Web Application Framework
ASP.NET MVC is an open source web development framework from Microsoft based on the architectural pattern called Model-View-Controller (MVC). ASP.NET MVC is used for building MVC-based Web applications and is a good alternative to a framework based on the ASP.NET Web Forms pattern. The framework is built on the top of ASP.NET so developers can take advantage of practically all ASP.NET advanced features.
The MVC framework is a software design pattern for building user interfaces that isolates the application logic from the user interface. With MVC, an application is divided into 3 interconnected parts in order to separate UI logic, business logic, and input logic. ASP.NET MVC has the following components:
- Models that responsible for implementing the entire logic for the application’s data domain. Frequently, models retrieve the data from the database, operate it, and store the updated information.
- Views that responsible for displaying a user interface of the application which is built using the model data.
- Controllers that responsible for managing user interaction, working with the model as well as selecting the view to change as appropriate.
With ASP.NET MVC pattern, developers can build applications where various aspects are separated and ensuring absence of coupling among all elements. The MVC pattern determines the location of each logic type in the application. Such separation helps developers handle complexity when they create applications and allows them to concentrate on a particular aspect of implementation. Besides, the ASP.NET MVC pattern enables developers to test ASP.NET Web applications based on ASP.NET Web Forms and makes the testing easier because individual components can be tested in isolation from the rest of the framework. Because of the loose coupling method used to interconnect the components of MVC applications, applications can be developed in a parallel process when each developer from a large team can stay focused on a specific aspect of the app development.