ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道
语雀:
https://www.yuque.com/yuejiangliu/dotnet/olbl88
视频地址:https://www.bilibili.com/video/av38392956/?p=3
自定义接口对象获取信息
现在不想从配置源里面获取信息,自己写一个服务,首先弄一个接口叫做IWelcomeService
假设接口有这么一个方法getMessage()
那么无论是哪个对象或者服务实现了这个接口,那么我就可以从实现了该接口的对象或者服务里来获取这个信息
把鼠标放在这,按Ctrl+.选择第一条在新的文件里面生成
然后这个接口就声明到了这里
这时候提示没有定义这个GetMessage方法
还是把鼠标放在这,Ctrl+.
x修改返回类型为string,现在就定义完了
创建WelComeService实现该接口,然后在接口上Ctrl+.实现该接口
接口实现完了
返回这段字符串
把它移动到这个文件里
现在就是一个单独的类了
现在接口有个实现了该接口的类也有了
这里也调用了GetMessage()的方法
打开命令行
dotnet run 直接报错了
主要的错误信息:意思就是无法找到实现了IWelcome的接口的对象
需要注册一个服务,对应着这个IWelcomeService
下面这两个服务都已经注册过了 是asp.net core 默认的配置,IWelcomeService是我们自己定义的接口,这个接口还没有进行注册
ConfigureServices方法就是用来注册服务的
这是一些预先设置的注册的服务的一些形式。
IWelcomeService是我们自定义的,有这么这几种方式注册。
下面使用单例模式进行注册的形式。在整个web项目的生命周期里,最多只会出现一个WelcomeService的实例
AddTransient:每次请求,每次有其他的类或者方法请求IWelcomeService的时候,它都建立一个新的WelcomeService的实例,它
是非常轻量级的
AddScoped:,每次http请求,一次web请求就会生成一次实例,在这个web请求期间,如果多次请求,那么他还是使用同一个WelcomeService实例
这里我们使用到单例模式,再次运行项目
管道和中间件
中间件决定如何处理这个请求,中间件其实就是一个对象,每个中间件的角色和功能都不一样,每个中间件功能都局限在特定的领域内,
所以我们整个web应用,将会使用很多个中间件
管道是双向设计的,一个请求进入管道会按照我添加的顺序依次进入中间件,我首先添加的是Logger,那么请求就先经过logger,下一个添加的是授权中间件,就会经过授权的中间件,最后是路由的,就会走路由的中间件
假设路由中间价产生了一个响应,那么这个响应就原路返回,路由--授权--logger和进入的时候路径是相反的
我们需要按照特性的顺序来设置我们的中间件组成我们的web应用的功能