.Net Core个人笔记

前言

学习Net Core的个人笔记,记录

IOC注册

Startup类中的ConfigureServices方法是用于服务注册IOC

ConfigureServices这个方法是用于服务注册的,服务就是IOC里面的类

三种生命周期

IOC容器内的服务有三种生命周期

  1. Transient:每次请求都会创建一个新的实例
  2. Scoped:每次Web请求都会创建一个实例
  3. Singleton:一旦实例被创建,一直使用,直到应用停止

如何注册一个IOC服务

我们有一个类和一个接口,接口的实现类,这里不写,注册如下

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton<IStudentService,StudentService>();
        }

写了一个单例的服务,已经注入了,调用后续再写

管道和中间件

示意图

下图很经典,用户的请求需要经过管道,管道内部可以写中间件,如果你什么都不写,那么请求返回的就是固定的,你加了中间件,就会有变化,比如权限验证,身份验证,MVC处理等中间件

管道方法

Startup类里面的Configure方法就是管道的方法,可以在里面写中间件

中间件

app.Run就是运行的一个中间件,现在我们写一个新的中间件

            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });
            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("许嵩!");
            });

运行,可以发现,还是Hello World,根本没有许嵩,因为中间件根本没往下执行,可以这样设置

app.Use(async (context,next) =>
            {
                await context.Response.WriteAsync("Hello World!");
                await next();
            });
            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("许嵩!");
            });

加了一个next,然后执行await next(); 这样就会执行按照顺序的下一个中间件

加日志观看

        public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILogger<Startup> logger)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.Use(async (context,next) =>
            {
                logger.LogInformation("管道1开启");
                await context.Response.WriteAsync("Hello World!");
                await next();
                logger.LogInformation("管道1结束");
            });
            app.Run(async (context) =>
            {
                logger.LogInformation("管道2开启");
                await context.Response.WriteAsync("许嵩!");
                logger.LogInformation("管道2结束");

            });
        }

加了一个日志ILogger,这样再运行,注意这次运行不选择IIS了,我们选择Kestrel服务器,就是你的解决方案同名的那个,运行,可以查看日志

猜你喜欢

转载自www.cnblogs.com/yunquan/p/11198539.html