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应用的功能

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道的更多相关文章

  1. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由

    视频地址: https://www.bilibili.com/video/av38392956/?p=5 这里面就包含了MVC相关的库 可以通过打开右侧的Nuget库进行查看 这里修改下 ,只需要静态 ...

  2. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 25. 过滤器

    在MVC的请求管道 并不是  asp.net core的请求管道.所以说Filter是专用于MVC的 贯穿特性,横穿关注点.比如授权.日志 这里的Authorize其实就是一个Filter,主要用来授 ...

  3. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 02. Web Host 的默认配置

    视频地址: https://www.bilibili.com/video/av38392956/?p=2 语雀 https://www.yuque.com/yuejiangliu/dotnet/ixt ...

  4. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 12. Views 下

    ASP.NET Core MVC 13. 安装前端库 Partial VIew 就是部分View,他没有自己的数据,数据来自图中白色的那块,它的数据需要传进去,第一个参数是View的名称,第二个参数就 ...

  5. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 04. 中间件

    注册startup类可以配置我们web应用的启动逻辑,使用的就是UseStartUp方法,asp.net core就会实例化这个类 并调用startup类里面的两个方法ConfigureService ...

  6. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 13. 安装前端库

    前端库使用npm进行安装,需要先建立webpack.json文件 因为我们没有使用npm安装任何库,所以npm的文件夹是空的 这里是用于开发时构建时引用的库写在这里 这里用到bootStrap 开发时 ...

  7. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 27. CICD Azure DevOps

    VSTS做持续集成 后来改名叫做Azure Deveps https://azure.microsoft.com/zh-cn/services/devops/ 这是中文的地址 创建一个项目 名称.描述 ...

  8. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 01. 创建项目 +项目结构和配置简介

    新建项目:Tutotial.Web 解决方案名称可以把web去掉 视频里面把git这个选项勾选了.我就不勾选了 dotnet CLI创建项目 首先必须安装好了.net Core的SDK dotnet ...

  9. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 06. Controller 返回View

    Controller父类会提供很多上下文的相关信息,还提供了很多封装的方法 返回的对象要求实现了IActionResult接口 继承父类,并引入命名空间 写this点就出现很多东西,这些就是上下文的信 ...

随机推荐

  1. 【mac】屏幕截图快捷键

    这里只说四种 1.command+shift+4 截图是区域截图,会自动保存在桌面上 2.command+shift+control+4 区域截图,截图会自动保存在剪切板中,然后你可以通过comman ...

  2. 上手ReactiveCocoa之基础篇

    转自 --> http://www.jianshu.com/p/87ef6720a096 前言 很多blog都说ReactiveCocoa好用,然后各种秀自己如何灵活运用ReactiveCoco ...

  3. [Javascript] Wrap fireEvent with fireEventAsync

    The idea is wrap a object with all its function methods and add some additional handling into a new ...

  4. 利用Loader来动态载入不同的QML文件来改变UI

    在这篇文章中.我们将介绍怎样使用Loader来载入不同的QML文件来实现动态的UI.在之前的文章"怎样使用Loader来动态载入一个基于item的Component"中,我们已经介 ...

  5. FlashBuilder找不到所需要的AdobeFlashPlayer调试器版本的解决方案

    这个问题就是因为你所装的FlashPlayer不是调试器版本.如果你的FlashPlayer是调试版,那么你随便打开一个有Flash的页面,然后右键点击Flash,就会有一个调试器,菜单,当然它现在是 ...

  6. 基于mqtt协议实现手机位置跟踪

    Mqtt协议是物联网领域的一个标准协议,具有轻巧,对设备,带宽要求低,可靠稳定的特点,适合用来实现手机定位跟踪功能. 目前我初步搭建起来了整个可运行的框架,大致为如下思路:1.手机端通过位置服务,获取 ...

  7. TypeError: 'module' object is not callable 原因分析

    程序代码 class Person: #constructor def __init__(self,name,sex): self.Name = name self.Sex = sex def ToS ...

  8. easyui tree的简单使用

    Tree 数据转换 所有节点都包含以下属性: id:节点id,这个很重要到加载远程服务器数据 which is important to load remote data text: 显示的节点文本 ...

  9. B.大钉骑马走江湖

    江湖是什么,对于在象棋界厮杀的大钉来说,江湖就是一个矩阵,他的目标,就是在江湖之中骑着马,从他的位置出发,走到终点. 当然,大钉的马也遵从中国象棋中的“马走日”的规则,而且在矩阵中,也会有一些障碍物, ...

  10. js中数组遍历的几种方法及其区别

    参考网站: http://www.cnblogs.com/lvmh/p/6104397.html 第一种最常用的:for循环 for(j = 0; j < arr.length; j++) { ...