服务注册
依赖注入的生命周期
- Transient:每次被其他类或方法请求都会创建新的实例
- Scoped:每次 Web 请求只创建一个实例
- Singleton:一旦被创建实例,就会一直使用这个实例,直到应用停止
示例:IWelcomeService 的注册和使用
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IWelcomeService, WelcomeService>();
}
public void Configure(
IApplicationBuilder app,
IHostingEnvironment env,
IWelcomeService welcomeService)
{
...
app.Run(async (context) =>
{
var welcome = welcomeService.GetMessage();
await context.Response.WriteAsync(welcome);
});
}
管道和中间件
例如:
- Logger 记录请求信息
- 授权根据 cookie 或 token 进行权限判定
- 路由根据请求 URL 确定调用哪个类的哪个方法
- 成功响应,原路返回 JSON 或 HTML