ASP.Net Core 2.2 MVC入门到基本使用系列 (三)

本教程会对基本的.Net Core 进行一个大概的且不会太深刻的讲解, 在您看完本系列以后, 能基本甚至熟练的使用.Net Core进行Web开发, 感觉到.Net Core的魅力.html

本教程知识点大致分为如下几个阶段数据库

  • ASP.Net Core MVC基础知识
  1. Startup基本配置和理解
  2. Controller使用
  3. Razor视图
  4. 传统视图
  5. Model Validation (基本用法)
  6. 一点点的Vue (教程使用Vue配合)
  • SqlSugar ORM (进行数据库交互)
  • Entity Framework  Core(基本介绍使用)
  • 受权和身份验证(MVC的, WebApi的不进行介绍)
  • 安全性
  • 测试 / 单元测试
  • 性能基本优化
  • 日志功能
  • CI/CD
  • Windows部署
  • Linux部署

想必你们都知道ASP.Net Core MVC默认自带了DI容器的, 咱们能够很方便的进行使用, 来方便管理对象和生命周期, 那么这一节我就会详细讲解服务注册, 顺便简单讲解一下管道, 让你们知道了基本的MVC运行流程.浏览器

  回顾一下上一节的内容, 咱们从配置文件中获取了输出的字符, 也介绍各个配置的 "优先级" (实际上是配置覆盖), 那么咱们这一节以服务的方式输出这个字符串, 而后用过DI进行注册服务, 快速了解服务注册.安全

  DI容器呢, 依赖接口, 因此咱们先新建一个接口, 就叫 IWelcome , 接口里面定义个方法, 叫GetWelcomMsg, 而后再建个类, 实现这个接口, 这样, 咱们的一个最基本的服务就作好了. 代码结构和代码以下图 (我建了个文件夹, 存放这些服务):并发

  

代码编写完以后, 咱们尝试在Configure方法里面注入引用这个接口, 由于咱们获取配置信息的时候也是直接在这个方法里面注入使用的, 那咱们来试试, 代码以下图 : post

 

一切都很正常, 方法也能调用, 咱们跑起来试试看, 能不能正常使用. 性能

一点都不意外, 它报错了, 报错信息以下图 : 单元测试

意思就是没法解析IWelcome这个服务, 也是就没法注入这个服务. 学习

那么为何 IConfiguration, IHostingEnvironment, IApplicationBuilder等等之类的接口, 咱们能直接注入使用呢, 那是ASP.Net Core MVC里面的源包里面, 已经自动为咱们注册好了这几个服务, 咱们直接可使用. 咱们要使用自定义的服务或者组件, 须要咱们本身进行注册.测试

说到自定义服务注册, 就不得不说服务注册的几种方式, 或者说是几种不一样的注册方法. 总共分为三种, 也就是三个注册服务的方法.

咱们看看 Startup 这个类, 会发现它里面有个ConfigureServices方法, 看名字就知道, 它是配置服务用的, 有个IServiceCollection接口参数, 这个接口就是.Net Core默认提供的DI服务的接口管理对象, 咱们全部注册的服务均可以经过这个接口进行管理或操做. 若是使用第三方包, 如Autofac另说, 这里不介绍Autofac的使用.

那么咱们就能够经过IServiceCollection接口进行咱们自定义服务的注册了, 上面提到了有三个注册服务的方法, 分别是 : 

  1. AddSingleton (单例模式注册服务, 也就是在整个应用程序中, 只会建立一个接口对象, 全部的请求都会使用这个接口对象, 可能会有并发问题)

  2. AddTransient (管道机制注册服务. 也是在每一个请求发生的时候, 都会建立一个接口对象, 给当前请求使用)

  3. AddScoped (会话机制注册服务. 也就是在当前会话中, 只会建立一个接口对象. 什么是一个会话, 能够简单理解为当前浏览器打开到关闭, 这个过程就是一整个会话的过程)

那么这里, 咱们先使用AddSingleton单例模式注册服务, 代码以下 : 

  services.AddSingleton<IWelcome, Welcome.Services.Welcome>();

上面提到的三个方法, 使用方式都同样, 都是两个泛型参数, 第一个泛型参数是接口, 第二个是泛型参数是接口实现类.

那么再运行一个咱们的程序, 能够看到浏览器正常输出咱们的字符串了.

至于上面三个不一样生命周期的注册方法, 怎么使用, 看服务的用途, 通常我推荐使用AddScoped注册服务

到这里, 咱们一个简单的服务就从定义到实现到注册到使用就完成了. 是否是很简单呢.

下面咱们简单讲讲ASP.Net Core MVC的管道

这里我只会简单讲解ASP.Net Core MVC的管道运行流程, 不会讲解从监听端口到转发到ASP.Net Core MVC里面是怎么实现的

好比咱们如今发起一个Get请求, 在MVC收到这个请求的时候, 咱们的管道流程就开始运行了, 它会最早触发Logger这个中间件, 就是日志中间件, 这个中间件里面能够获取不少信息, 好比请求头部信息, 参数信息等等, 甚至咱们能够对这些信息进行修改. 这些信息也会在控制台输出, 若是用的是dotnet run命令运行这个MVC程序的话, 这里不放截图了, 大家能够本身试试

 

在日志中间件执行完以后, 就会执行其它的中间件, 若是咱们启用了其它的中间件. 好比咱们启用了身份验证中间件, 那么在日志中间件执行完成以后, 就会执行身份验证中间件, 进行身份验证, 若是验证成功了, 继续下一步处理, 若是验证失败了, 就作其它处理, 好比重定向到登陆页面等等.

 

在这一步执行完成以后, MVC管道就会进入路由匹配的过程. 若是匹配成了, 就正常返回HTML或JSON或XML数据等等, 若是匹配失败了, 就404错误等等.

 

这就是ASP.Net Core MVC管道的一个基本流程, 其实里面作的事情远远不止这些, 这里就不作深刻的讲解, 若是有须要, 自行学习. 由于讲一个真正的管道机制, 一会儿也讲不完. 这里的目的只是要你们基本了解ASP.Net Core MVC的基本运行流程.

 

到这里, 这一节的内容就结束了. 上面提到了中间件这个东西, 那下一节咱们就讲究什么是中间件, 怎么使用中间件.

若是在使用.Net Core遇到任何问题, 都加群进行讨论, 群号: 1群: 225982985. 2群: 726648662. 3群: 654015377

 

上一篇: ASP.Net Core 2.2 MVC入门到基本使用系列 (二)

下一篇: ASP.Net Core 2.2 MVC入门到基本使用系列 (四)

相关文章
相关标签/搜索