重庆熊猫 Loading

ASP.NET Core教程-Services(服务)

更新记录
转载请注明出处:
2022年11月17日 发布。
2022年11月16日 从笔记迁移到博客。

服务(Services)说明

服务是什么#

服务是Web应用程序中提供功能的对象,为应用程序添加功能

服务是一个对象(Object),用于提供给Web应用程序各种功能

服务本质来讲只是为应用程序其他部分提供功能的对象

image

为什么需要服务#

对象可以自己创建为什么还需要服务,因为服务被ASP.NET Core管理

可以更加便捷的管理这些对象,比如使用dependency injection(依赖注入)

中间件通常也使用服务来进行初始化

注册服务

注册服务基础#

当我们谈论注册服务时

我们真正谈论的是所谓的服务容器

这是“注册”服务的地方

换句话说,这是告诉DI系统将接口与给定的具体类关联的地方

在ConfigureServices方法中注册服务

image

ConfigureServices方法在内部将接口与具体的类型关联

image

一旦我们在服务容器中注册了我们的服务

每当我们请求从应用程序中的其他位置请求使用给定的接口时

DI系统就会提供或“注入”与该接口相关联的具体类 (又称“依赖性”)

这意味着,如果我们需要将具体的类换成其他实现

则只需要在一个地方进行更改(ConfigureServices方法),其余的代码不需要更改

三种注册服务的类型#

AddTransient:  瞬时,每次从服务容器请求服务时都会创建一个服务
AddScoped:     作用域,每个客户端请求(连接)都会创建一次服务
AddSingleton:  单例,服务创建一次并一直重新重复使用

配置Startup.cs文件

Startup.cs文件作用#

StartUp类主要由三个类组成:

构造函数Startup

ConfigureServices()方法

Configure()方法

执行过程:

ASP.NET Core应用启动的时候,三个函数都会执行

​ 第二次请求到时,构造函数已经执行过了,不会再执行

ConfigureServices()方法 和 Configure()方法 会再次执行

构造函数Startup作用:

接收一个实现IConfiguration接口的对象参数,这个参数表示配置信息

配置信息来自appsettings.json文件

public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}

ConfigureServices()方法作用:

注册服务(register services)到DI框架中

​ 接收一个实现IServiceCollection接口的对象参数,这个参数表示

​ 可以在该方法中添加应用程序需要的服务

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
}

Configure()方法作用:

管理请求管道(request pipeline)

请求管道由一系列处理Request的中间件(middleware)组成

该方法有两个参数IApplicationBuilder和IWebHostEnvironment

​ IApplicationBuilder参数用于管理请求管道

​ IWebHostEnvironment参数用于读取服务器环境信息

ASP.NET Core MVC#

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseRouting();
    
    app.UseEndpoints(endpoints =>
    {
      endpoints.MapControllerRoute(
       name: "default",
       pattern: "{controller=Home}/{action=Index}/{id?}");
    });
}

ASP.NET Core Razor Pages#

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseRouting();
    app.UseEndpoints(endpoints =>
    {
      endpoints.MapRazorPages();
    });
}

ASP.NET Core Web API#

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseRouting();
    app.UseEndpoints(endpoints =>
    {
      endpoints.MapControllers();
    });
}

内置服务-Configuration

配置服务自身不理解任何配置项的含义。只负责将各个配置文件(比如:appsetting.json、环境变量、命令行参数)的配置项进行合并,然后提供在程序中进行访问。

内置中间件-Logging

内置中间件-StaticFiles

作者:重庆熊猫

出处:https://www.cnblogs.com/cqpanda/p/16894793.html

版权:本作品采用「不论是否商业使用都不允许转载,否则按3元1字进行收取费用」许可协议进行许可。

posted @   重庆熊猫  阅读(1198)  评论(0编辑  收藏  举报
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示