你的位置:首页 > 软件开发 > ASP.net > ASP.NET Core 源码阅读笔记

ASP.NET Core 源码阅读笔记

发布时间:2016-06-01 18:00:24
在上一篇文章中我们主要分析了ASP.NET Core默认依赖注入容器的存储和解析,这一篇文章主要补充一下上一篇文章忽略的一些细节:有关服务回收的问题,即服务的生命周期问题。有关源码可以去GitHub上找到。 这次的主角就是ServiceProvider一人,所有 ...

    在上一篇文章中我们主要分析了get='_blank'>ASP.NET Core默认依赖注入容器的存储和解析,这一篇文章主要补充一下上一篇文章忽略的一些细节:有关服务回收的问题,即服务的生命周期问题。有关源码可以去GitHub上找到。

    这次的主角就是ServiceProvider一人,所有有关生命周期的源码几乎都集中在ServiceProvider.cs这个文件中。

    我们知道服务的生命周期由三种,分别是:

  1. Transient
  2. Scoped
  3. Singleton

    首先给出我的结论:这三种生命周期类别本质上没有区别,服务的生命周期都是由提供服务的容器,即ServiceProvider的生命周期决定的,一个ServiceProvider被回收之后,所有由它产生的Service也随之被回收。由此看来,一个ServiceProvider起了一个ServiceScoped的作用,其实就是这样,ServiceScope本质上就是一个ServiceProvider。

 1   internal class ServiceScope : IServiceScope 2   { 3     //仅有一个只读的ServiceProvider字段 4     private readonly ServiceProvider _scopedProvider; 5  6     public ServiceScope(ServiceProvider scopedProvider) 7     { 8       _scopedProvider = scopedProvider; 9     }10 11     public IServiceProvider ServiceProvider12     {13       get { return _scopedProvider; }14     }15 16     public void Dispose()17     {18       _scopedProvider.Dispose();19     }20   }

原标题:ASP.NET Core 源码阅读笔记

关键词:ASP.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。