Asp.Net.Core 系列-中间件和依赖注入基础篇
2017-08-09 21:09
941 查看
好久没写博客了,打算把学习ASP.NET.Core的知识点记录下来。
.NETCore是微软推荐的新的框架,那么我们要明白,我们是基于微软专家的基础上去学习,微软专家主要做了什么?
微软专家定义了一套规范的接口,来实现客户端请求到服务器返回。我们用他们的,就要清楚这一点。进入正题:
依赖注入是什么?网上介绍的文章很多不多说,这么做主要主要是为了解耦合,使我们开发出可维护,可测试的代码和程序,说白了就是定义了一套接口,我们写一个类去继承这个接口,那么这个类就需要实现这个接口的方法(功能和属性),这就是依赖注入。
中间件是什么?再讲之前,我先问你几个基本问题?
1).Net是面向对象的,那么面向对象是什么?
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。听上去就是这样的,我的理解
是描述一个对象的解决问题的步骤中的行为和具备的属性。这个对象有一些属性和方法,就具有封装,继承,多态,抽象的特征。大学学习程序的时候,我是左耳进右耳出的,理解了
就过了,没有去深究,打好基础很重要。这里我们就拿继承来说说:
继承:C#中继承只支持单继承(既继承一个父类),但却支持多个接口。这点和java差不多(大学学的java,忘记差不多了)。为什么我要讲继承,因为我们用微软的接口,就是一个继承呀。我们去写类的时候要记住:在C#中可以通过sealed关键字来申明一个不可被继承的类,C#将在编译阶段保证这一机制。所以我们写一个类去继承微软定义的接口的时候,就可以实现微软给我们的功能 了。这里有一点很重要,继承后的执行顺序问题,请看下面的例子:
调试运行,可以看到派生顺序是:Base → A[b] → B[b] → C[/b][/b],也验证了刚刚我们所提到的构造顺序。
上述代码的整个构造顺序如下图所示:
理解就ok。
2)什么是委托?
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。我的理解就是动态的调用方法。我委托一个人去做一件事,也就是委托。
这就是委托,这里调用就是Invoke,当然也可以有异步的调用。
什么是中间件?用来处理发送到Pipeline中的请求,是实现应用程序委托的组件。这就是中间件。
那么我们什么时候知道请求过来呀,就是因为不知道,所以我们需要委托,当请求过来的时候,直接Invoke调用就ok了,这个委托就叫做RequestDelegate。
实现方法就是:public async Task Invoke(HttpContext context){}来实现的调用。那么在中间件实例化,可以带上日记,注入的服务等等。
如果有错误,请指出,谢谢。
.NETCore是微软推荐的新的框架,那么我们要明白,我们是基于微软专家的基础上去学习,微软专家主要做了什么?
微软专家定义了一套规范的接口,来实现客户端请求到服务器返回。我们用他们的,就要清楚这一点。进入正题:
依赖注入是什么?网上介绍的文章很多不多说,这么做主要主要是为了解耦合,使我们开发出可维护,可测试的代码和程序,说白了就是定义了一套接口,我们写一个类去继承这个接口,那么这个类就需要实现这个接口的方法(功能和属性),这就是依赖注入。
中间件是什么?再讲之前,我先问你几个基本问题?
1).Net是面向对象的,那么面向对象是什么?
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。听上去就是这样的,我的理解
是描述一个对象的解决问题的步骤中的行为和具备的属性。这个对象有一些属性和方法,就具有封装,继承,多态,抽象的特征。大学学习程序的时候,我是左耳进右耳出的,理解了
就过了,没有去深究,打好基础很重要。这里我们就拿继承来说说:
继承:C#中继承只支持单继承(既继承一个父类),但却支持多个接口。这点和java差不多(大学学的java,忘记差不多了)。为什么我要讲继承,因为我们用微软的接口,就是一个继承呀。我们去写类的时候要记住:在C#中可以通过sealed关键字来申明一个不可被继承的类,C#将在编译阶段保证这一机制。所以我们写一个类去继承微软定义的接口的时候,就可以实现微软给我们的功能 了。这里有一点很重要,继承后的执行顺序问题,请看下面的例子:
调试运行,可以看到派生顺序是:Base → A[b] → B[b] → C[/b][/b],也验证了刚刚我们所提到的构造顺序。
上述代码的整个构造顺序如下图所示:
理解就ok。
2)什么是委托?
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。我的理解就是动态的调用方法。我委托一个人去做一件事,也就是委托。
这就是委托,这里调用就是Invoke,当然也可以有异步的调用。
什么是中间件?用来处理发送到Pipeline中的请求,是实现应用程序委托的组件。这就是中间件。
那么我们什么时候知道请求过来呀,就是因为不知道,所以我们需要委托,当请求过来的时候,直接Invoke调用就ok了,这个委托就叫做RequestDelegate。
实现方法就是:public async Task Invoke(HttpContext context){}来实现的调用。那么在中间件实例化,可以带上日记,注入的服务等等。
如果有错误,请指出,谢谢。
相关文章推荐
- Asp.Net.Core 系列-中间件和依赖注入进阶篇
- Asp.Net.Core 系列-中间件和依赖注入Hosting篇
- 3.1依赖注入「深入浅出ASP.NET Core系列」
- ASP.NET Core 2.0系列学习笔记-DI依赖注入
- 3.1依赖注入「深入浅出ASP.NET Core系列」
- ASP.NET Core依赖注入解读&使用Autofac替代实现
- ASP.NET Core中的依赖注入(5): ServiceProvider实现揭秘 【解读ServiceCallSite 】
- 学习ASP.NET Core,你必须了解无处不在的“依赖注入”
- ASP.NET Core 2.0系列学习笔记-Middleware中间件
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【四】——实现模型工厂,依赖注入以及格式配置
- 详解ASP.NET Core 中的框架级依赖注入
- ASP.NET Core 中文文档 第三章 原理(10)依赖注入
- 【转载】ASP.NET Core 依赖注入
- [转]解读ASP.NET 5 & MVC6系列(7):依赖注入
- ASP.NET Core 中的框架级依赖注入
- 了解ASP.NET Core 依赖注入,看这篇就够了
- ASP.NET Core中的依赖注入(1):控制反转(IoC)
- ASP.NET Core依赖注入
- 使用依赖关系注入在 ASP.NET Core 中编写干净代码
- 解读ASP.NET 5 & MVC6系列(7):依赖注入