services.AddControllers();有啥用啊,我不添加他 也能打开啊?

来源:2-4 【应用】添加第一个API

慕虎7937911

2020-07-24

写回答

1回答

阿莱克斯刘

2020-07-25

    .net core项目的启动入口是program.cs,而在项目启动的时候需要加载一些支撑后端api运行的服务,这些服务就是在的在startup类的configServices函数中注册加载的(如果没有加载这些服务,那么.net Core程序就是一个简单的啥也干不了的命令行程序)。

    而 “ services.AddControllers(); ”是干嘛用的呢?因为我们的项目是个api项目,需要使用的很多基础的功能,比如路由、请求处理等等。而services.AddControllers()就是用来处理这些最底层工作的。

    实际上,绝大部分的ASP.NET项目的运行都是基于mvc框架的,而mvc框架实际上是包含model-view-controller三个部分的。所以,对于我们课程的.net core项目来说,你也可以把services.AddControllers换成下面任意一句话。

services.AddMvc() //加载整个mvc框架所有功能
services.AddMvcCore() //加载mvc框架的核心功能,轻量级
services.AddControllersWithViews() //仅加载controller控制器和view视图
services.AddControllers()//仅加载controller控制器

    从功能上来说,AddMvc() > AddMvcCore() > AddControllersWithViews() > AddControllers()。

    如果你在使用visual studio创建项目的时候仔细观察,你会发现vs中除了提供空模版、和api模版,还会提供一个mvc模版。而这个mvc模版加载的服务就是AddMvc(),因为这个模版将会使用mvc全部的功能,视图view的部分也会使用一个叫做cshtml的文件(html的变种,可以在html中写c#代码,类似java的jsp)。

    关于ASP.NET Core MVC的只是你可以快速浏览一下慕课网的免费课程《打造你的第一个ASP.NET Core MVC网站应用》(大概4小时的内容,https://www.imooc.com/learn/1188  ),这门课程会从MVC的角度来介绍ASP.NET Core,如果能学习一下,应该对理解本门课程有很大的提升。

    不过,现在越来越提倡前后端分离,这就是我们的课程所设立的初衷,实现的是纯粹前后端分离的api。既然是前后端分离,那么我们就不需要强行耦合html (cshtml) ,所以我们也没必要使用addmvc加载整套mvc框架,这就是为什么课程选择services.AddControllers()来作为基础服务。

    不管是免费课还是实战课,都欢迎加入课程的讨论群,我们可以随时探讨学习中遇到的问题。

QQ技术讨论群

QQ群:294700320

若遇到搜索不到QQ群或加群失败,请联系客服邮箱:kf@imooc.com






3
0

.Net 开发电商后端API 从0到精通RESTful

. Net 实战+RESTful思想纵深课程,开发优雅RESTful风格API。

978 学习 · 547 问题

查看课程