Web应用是.NET Core 开发中常见的项目类型,无论是网站还是HTTP服务接口,都有提供对外Web访问的能力,而.NET Core中进行Web应用开发的核心底层技术是ASP.NET Core。
在ASP.NET Core 这个底层基础上,微软开发了ASP.NET Core MVC 和 ASP.NET Core Web API这两个框架。随着软件项目复杂度的增加及软件项目分工的细化,前后端分离已经成为了主流的开发模式,后端开发人员使用ASP.NET Core Web API开发服务接口,界面交互等由前端开发人员使用Vue等前端框架来完成。在ASP.NET Core MVC 这种开发模式下,后端开发人员也仍然要编写一部分前端的代码,而在前后端分离的开发模式下,后端开发人员不再需要处理任何界面逻辑,而只需要编写ASP.NET Core Web API
在.NET Framework中,ASP.NET MVC是用来进行基于视图的MVC模式开发的框架,而ASP.NET Web API 2 是来进行Web API开发的框架,这是两个不同的框架。而在ASP.NET Core中,不再做这样的区分,严格来将,只有ASP.NET MVC 这一个框架,ASP.NET Core MVC既支持基于视图的MVC模式开发,也支持Web API开发和Razor Pages开发等。不过在Visual Studio中创建项目的时候,仍然存在这两种向导,分别用来Web API项目和传统的基于视图的MVC项目。在谈到区分基于视图的MVC和Web API的时候,我们也会分别把它们称为ASP.NET Core MVC和ASP.NET Core Web API
1.ASP.NET Core MVC项目
创建后的项目初始结构
![](http://47.106.11.228/wp-content/uploads/2023/08/图片.png)
选项 | 说明 |
WWWroot | 图片、JS、CSS等静态文件 |
MVC | MVC相关 |
appsettings.json | 默认的配置文件 |
Program.cs | 项目的入口代码 |
编写第一个MVC程序
ASP.NET Core MVC 采用MVC模式,也就是把页面交互的代码分为模型(model)、视图(view)和控制器(controller)三个部分。
视图负责内容的展现,也就是用来显示HTML网页;
控制器负责处理用户的请求以及为视图准备数据;
模型负责在视图和控制器之间传递数据。
![](http://47.106.11.228/wp-content/uploads/2023/08/图片-1-1024x377.png)
在MVC模式中,视图和控制器不直接交互,不互相依赖,彼此之间通过模型进行数据传递。
使用MVC模式的优点是视图和控制器降低了耦合,系统的结构更清晰。
MVC模式是一种软件架构模式,和具体语言,技术无关,ASP.NET Core MVC是.NET Core中基于ASP.NET Core实现的MVC框架。
在ASP.NET Core MVC中,控制器由Controller类实现,视图一般是扩展名为”cshtml”的文件,而模型则是只有属性的普通C#类。
控制器类一般直接或者间接继承自Controller类,控制器类的名字一般以Contorller结尾,并且被放到Controllers文件夹下;视图一般被放到Views文件夹下的控制器名字的文件夹下。
控制器的名字为控制器类名去掉Controller,比如控制器类名为HomeController,则和它相关的视图被放到Views/Home文件夹下。模型则放到Models文件夹下。
浏览器端提交的请求会被封装到模型类的对象中并传递给控制器,控制器中对浏览器端的请求进行处理,然后将处理结果放到模型类的对象中传递给视图,而视图则解析模型对象,然后将其渲染成HTML内容输出给浏览器。
2.使用ASP.NET Core 开发 Web API
ASP.NET Core MVC 是 ASP.NET Core中进行网站开发的技术,我们一般在浏览器中访问由ASP.NET Core MVC 开发的系统。
随着移动互联网、物联网等技术的发展,现在的访问服务器的客户端已经不局限于浏览器了,手机App、微信小程序、智能家电、可穿戴式设备等都有和服务器端进行数据交互的需求。
浏览器和服务器端之间传递的主要是HTML,而手机App等客户端和服务器端之间主要传递的是JSON等结构化的数据。
我们把提供结构化数据服务的接口叫做Web API。