2 服务的生命周期
服务的生命周期
单例:
服务只被实例化一次,后面所有的请求都只用这一个创建好的实例,需要注意多线程问题;
也就是这个服务里面的东西最好不要存在外部的变量, 这样每个实例都可能会修改它,而且修改的时候这个值可能已经发生了改变,需要加锁;
内部的变量则无所谓;
services.AddSingleton<IProductService, ProductService>();
作用域
每次请求服务都会被创建一次,然后这个实例化的对象,在后面整个的中间件和Controller 中被反复使用;
比如EF Context
services.AddScoped<IProductService, ProductService>();
瞬时
每次请求都会被创建一次,甚至是
services.AddTransient<IProductService, ProductService>();
服务释放
容器为其创建的 IDisposable 类型调用 Dispose。 从容器中解析的服务绝对不应由开发人员释放。 如果类型或工厂注册为单一实例,则容器自动释放单一实例
顶
收藏
关注
评论
作者:王思明
出处:http://www.cnblogs.com/maanshancss/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。所有源码遵循Apache协议,使用必须添加 from maanshancss
出处:http://www.cnblogs.com/maanshancss/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。所有源码遵循Apache协议,使用必须添加 from maanshancss