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. Oracle 12c agent install for linux

    安装Agent代理 在EM11g时,agent安装是通过在被监制主机端下载agent代理并安装,在EM12c版本号上,能够在EM12c服务端.通过"推送"的方式把agent代理在远 ...

  2. C++与Java语法上的不同

    最近学习算法和刷题基本都是用C++写的程序,在这个过程中,发现C++和Java在语法上有很多相同点,但也有很多不同点,而这些不同点对于已经掌握Java的程序员来说,理解C++代码可能会有些吃力甚至困难 ...

  3. [HTML5] Show Different Variations of Images Depending on the Viewport Width using Art Direction

    For small viewports, we may want to show a variation of the desktop image. A very common use case of ...

  4. Cg入门8:Vertex Shader - 更好的数据组织方式struct

    数据结构的使用:与C语言语法一样 參数的传递:參数匹配的是映射的语义的类型 输入输出:採用结构体,输入输出相应的參数的in和out可省略.函数的參数结构体就是输入參数集,函数的返回结构体就是输出參数集 ...

  5. c程序设计语言第一章4

    (昨天网络出现了问题,导致这篇没来得及上传,再次补上,今晚照常上传笔记) 练习1.19编写函数r e v e r s e ( s )将字符串s中的字符顺序颠倒过来.使用该函数编写一个程序,每次颠倒一个 ...

  6. oracle spm使用1

    oracle11g new feature SPM 有助于保持sql的语句特性,仅仅同意运行性能提高的运行计划. 它不同于stored outlines, spm在于稳定sql性能,而store ou ...

  7. [转载]php 数组 类对象 值传递 引用传递 区别

    一般的数据类型(int, float, bool)不做这方面的解说了 这里详细介绍一下数组和的类的对象作为参数进行值传递的区别 数组值传递 实例代码: <?php function main() ...

  8. OpenStack源码系列---nova-compute

    nova-compute运行的节点为计算节点,虚拟机运行于计算节点上.例如对于创建虚拟机请求,nova-api接收到客户端请求后,经过nova-scheduler调度器调度,再将请求发送给某个选定的n ...

  9. JRE、JDK、JVM区别和联系

    首先说Java编程语言,它是一门高级编程语言,具体由谁何时创建的,读者可以到网上查找相关资料,这里就不再赘述.那么,谈到Java就不得不谈谈JVM.JRE和JDK三者间的区别和联系. JVM:英文全称 ...

  10. 12.怎样自学Struts2发送邮件和验证补充[视频]

    12.怎样自学Struts2发送邮件和验证补充[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pan.b ...