ASP.NET Core教程-Services(服务)
更新记录
转载请注明出处:
2022年11月17日 发布。
2022年11月16日 从笔记迁移到博客。
服务(Services)说明
服务是什么#
服务是Web应用程序中提供功能的对象,为应用程序添加功能
服务是一个对象(Object),用于提供给Web应用程序各种功能
服务本质来讲只是为应用程序其他部分提供功能的对象
为什么需要服务#
对象可以自己创建为什么还需要服务,因为服务被ASP.NET Core管理
可以更加便捷的管理这些对象,比如使用dependency injection(依赖注入)
中间件通常也使用服务来进行初始化
注册服务
注册服务基础#
当我们谈论注册服务时
我们真正谈论的是所谓的服务容器
这是“注册”服务的地方
换句话说,这是告诉DI系统将接口与给定的具体类关联的地方
在ConfigureServices方法中注册服务
ConfigureServices方法在内部将接口与具体的类型关联
一旦我们在服务容器中注册了我们的服务
每当我们请求从应用程序中的其他位置请求使用给定的接口时
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字进行收取费用」许可协议进行许可。
本文来自博客园,作者:重庆熊猫,转载请注明原文链接:https://www.cnblogs.com/cqpanda/p/16894793.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步