ASP.Net Core -- 服务注册和管道
注册服务
上一篇中最后说道可以通过IConfiguration
来获取配置信息,因为ASP.Net Core里使用的都是依赖注入,而IConfiguration是已经被注册好的,我们可以直接使用里边的服务,比如可以让我们来获取一些配置信息,今天就学习一下服务注册和管道,自己简单写一个服务,然后实现依赖注入,然后使用该服务,如下:
还是新建一个ASP.Net Core空项目,新建一个服务,名为:IWelcomeService,里边就提供一个方法,用来获取一个字符串,如下:
然后新建一个类,名为:WelcomeService.cs,来实现(服务)IWelcomeService接口,如下:
然后,和使用IConfiguration服务一样,在startup.cs里使用IWelcomeService服务,获取里边的字符串信息,如下:
这个时候运行的话,一定会报错的,报错信息大概是说找不到该服务,或者无法使用该服务,原因是什么呢?之前可以直接使用IApplicationBuilder,IHostingEnvironment,IConfiguration等这些服务,是因为这些服务是微软那边在ASP.Net Core这套框架里已经注册好的,所以可以直接让我们使用,而我自己写的,虽然语法不错,但是计算机并不知道,所以需要我们注册自己写的服务,才可以使用。如下:
在ConfigureServices方法注册我自己写的服务:
这边暂时使用的AddSingleton方法注册,已经足够用了,还有两种方式,暂时不学!
这样运行,就会输出“Hello from IWelcome service”
管道和中间件
中间件就是主要处理HTTP请求的,比如有一个POST类型的HTTP请求,要访问一个控制器下的方法,中间件将决定如何处理该请求,可以同意也可以拒绝,也可以记录请求信息。在asp.net core里的中间件其实就是一个对象,每个中间件的角色和功能还都不一样,每个中间件都局限于特定的领域内,所以每个中间件都很小,只关注那么一小块功能,所以在使用asp.net core这套框架开发web应用将会使用到很多中间件。
现在假设需要以下几个中间件:
1:Logger中间件、用来记录请求信息,比如什么类型的,cookie,头部信息,等等,最重要的还是记录,当然,这里只是假设,如果需要可以自己修改,根据需求让它做该做的事。
2:授权、可以用来判断用户请求,比如需要查找一个token,如果找到,就可以让请求继续往下走,如果没找到,可以返回一个代码,比如:401,也可以把用户重新定向到登录页面
3:路由、就是解析URL,看看URL到底要干什么,相应找哪个类,哪个方法,找遍整个应用,找到可以相应这个请求的东西,如果没找到,就应该返回404这个代码,如果找到了,就拿到返回的东西,一路返回。
当一个请求进入管道后,会根据程序里添加中间件的顺序,依次先后经过这些中间件,让每个中间件进行处理,最后处理成功后再以相反的顺序返回给客户端,可以说明管道是双向的。
这就是asp.net core管道和中间件的本质,我们需要按照特定的顺序,设置不同功能的中间件,来组成我们web应用的功能,其它中间件也很多,比如处理异常的等等,以后要用MVC框架,所以就要设定处理MVC的中间件。