03 服务注册和管道.mp4 (40.93MB)

服务注册

依赖注入的生命周期

  • Transient:每次被其他类或方法请求都会创建新的实例
  • Scoped:每次 Web 请求只创建一个实例
  • Singleton:一旦被创建实例,就会一直使用这个实例,直到应用停止

示例:IWelcomeService 的注册和使用

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.AddSingleton<IWelcomeService, WelcomeService>();
  4. }
  5. public void Configure(
  6. IApplicationBuilder app,
  7. IHostingEnvironment env,
  8. IWelcomeService welcomeService)
  9. {
  10. ...
  11. app.Run(async (context) =>
  12. {
  13. var welcome = welcomeService.GetMessage();
  14. await context.Response.WriteAsync(welcome);
  15. });
  16. }

管道和中间件

例如:

  1. Logger 记录请求信息
  2. 授权根据 cookie 或 token 进行权限判定
  3. 路由根据请求 URL 确定调用哪个类的哪个方法
  4. 成功响应,原路返回 JSON 或 HTML

image.png

源码

Tutorial.zip