点击上方蓝字"小黑在哪里"关注我吧
1.起源?
为什么会有这篇文章呢? 源于我看了老A的aspnet core 3 框架揭秘[1]请求管道 篇产生的疑惑?
三点疑惑:
- Singleton服务中注入Scoped服务产生内存泄露?
- 关于中间件的生命周期是Singleton的?
- 怎么避免中间件、Singleton服务中使用Scoped服务不产生内存泄漏?
2.知识面覆盖
示例中会覆盖到aspnet core相关的配置、依赖注入(周期)、中间件的知识点,若不清楚的需要先看看这些概念以及基本使用。
收获:和我一起带着以上三个问题来进行验证也就会收获到相关知识点。
3. 测试环境准备
创建三个服务:
1. IOrderAppService(singleton)
2. IProductAppService(scoped)
3. ITransientTestAppService(transient)
创建请求控制器:
public class ProductController : Microsoft.AspNetCore.Mvc.Controller
{
private int time = 1;
private readonly IHostApplicationLifetime _lifetime;
public ProductController(IProductAppService productAppService1,
IProductAppService productAppService2,
IOrd