ASP.NET
MVC Mavericks Road]01 - Understanding the MVC pattern
PS: MVC has been out for a long time, but I have never had the opportunity to use it at work. Out of interest, I will carry out in-depth study of MVC after work, record what I have learned through blog posts, and hope to get corrections from fellow gardeners.
Contents of this article
Understanding the MVC pattern in a general sense
MVC pattern (Model-View-Controller) is a key concept in software engineering A software architecture pattern that divides the software system into the following three basic parts:
Model (Model): The model is used to encapsulate data related to the business logic of the application and how to process the data. A "model" has direct access to data, such as a database. The "model" does not depend on the "view" and "controller", that is, the model does not care how it will be displayed or how it will be manipulated.
View: View can achieve purposeful display of data. There is generally no procedural logic in views.
Controller (Controller): The controller plays an organizational role between different levels and is used to control the process of the application. It handles events and responds. "Events" include user behavior and changes in the data model.
The above text comes from Wikipedia. Based on the above text and my personal understanding, I drew the following diagram showing the relationship between various parts of MVC:
Note, different platforms and different languages Frameworks have different definitions of MVC, and there is no clear definition. But generally speaking, each part in the MVC model has a clear division of labor and clear definition. The logic for manipulating data exists only in the model, the logic for rendering data exists only in the view, and the logic for handling user requests and input exists only in the controller. No matter how big the application is or what stage of its life cycle it is in, this clear separation of concerns MVC pattern makes our application easier to maintain and expand.
Understanding the domain model
The domain model (Domain Model) is a visual representation of conceptual classes in the domain or objects in the real world. Also known as conceptual model, domain object model, and business object model. It focuses on analyzing the problem domain itself, discovering important business domain concepts, and establishing relationships between business domain concepts. The domain model is an object model that describes the implementation of business use cases. It is an abstraction of how business roles and business entities should be related and collaborated to perform business.
For MVC applications, the domain model is a very important part. In a certain industry, we create models based on real-world entities, related operations, and rules. For C# programs, the domain model is a set of C# types (classes, structures, etc.) that encapsulate real-world objects; some operations (or processing) on objects in the domain are methods (Methods) defined in C# types. ; Some of the rules for object operations in the field are the logical processing within the method, such as the control of reading and writing class members by the get and set methods of the attribute reader and writer in C#. For example:
For example, in the field of banking, a personal "bank account" can be built into a model. Each account has the operation of "bank card consumption", which is a method under the bank account model. "No overdraft consumption" is a constraint rule for the use of bank cards in this account. This rule is the logical processing defined within the bank card consumption method.
Although the above is a bit abstract, it is still easy to understand. My understanding of the domain model can only go so far, friends, please experience it. In short, in MVC applications, we need to have this concept: to operate data through the Model, or to add an operation, or to add or change a rule to an operation, these are all changing the domain model of the application.
Understanding MVC in ASP.NET
In summary, ASP.NET MVC has the following characteristics:
By dividing the project into model view and controller, this separation of tasks (also known as separation of concerns) makes complex projects easier to maintain and test. Driver components also make applications easier to test.
Extensible and simple framework. The mvc framework is designed to make porting and customization easier. You can add your own view engine, url rewriting strategy, overloaded action methods, etc. mvc also supports Dependency Injection (DI) and Inversion of Control (IOC). The powerful URL rewriting mechanism makes it easier for you to create understandable and searchable URLs. The url can not contain any file extension, and the url can be rewritten to make it more search engine friendly.
Support for existing asp.net programs, you can use asp.net's existing page tags, user controls, template pages, data binding, etc.
……
In ASP.NET MVC, controllers are usually classes that inherit System.Web.Mvc.Controller. Each public method of a class in a controller is called an Action method. The ASP.NET routing system internally calls the corresponding Action method based on the requested URL and routing configuration. After completing the operation of the domain model, it selects a view to present to the client. The following figure shows the relationship between Controller, Model and View in ASP.NET MVC:
In addition, the ASP.NET MVC framework can use any database supported by .NET , ORM frameworks and other tools.
For beginners, I think it’s almost enough to understand the concept of ASP.NET MVC. If you want to better understand the concept of MVC in ASP.NET, it is recommended to visit the MSDN documentation.
If you are a novice, in order to help you understand, it is recommended to make a few simple demos yourself. You can refer to another garden friend's no-nonsense MVC introductory tutorial series of blog posts.
The above is [ASP.NET MVC Maverick’s Road] 01 - Understanding the content of the MVC model. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!