更新记录
转载请注明出处:
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

原文地址:http://www.cnblogs.com/cqpanda/p/16894793.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性