0%

AspNetCore作用域和对象释放

  • 实现IDisposable接口类型的释放

    1. DI只负责释放由其创建的对象实例

    2. DI在容器或子容器释放时,会释放由其创建的对象实例

    3. 避免在根容器创建实现了IDisposable的瞬时服务(即GetService),因为这样做会在根容器中积累瞬时服务的实例,只有等根容器释放时这些实例才会被释放,这样会占用很多的应用资源。

    1
    2
    /*如果IOrderService是实现了IDisposable接口,通过根容器获取该服务时,该服务的实例会一直存在,直到根容器释放为止*/
    app.ApplicationServices.GetService<IOrderService>();
  1. 避免手动创建实现了IDisposable的对象,然后放到容器中,因为这样做容器就不会管理我们创建对象的生命周期。
-------------本文结束感谢您的阅读-------------