首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用IServiceCollection.AddTransient、IServiceCollection.AddSingleton和IServiceCollectionAddScoped方法的实际场景是什么?

使用IServiceCollection.AddTransient、IServiceCollection.AddSingleton和IServiceCollectionAddScoped方法的实际场景是什么?
EN

Stack Overflow用户
提问于 2017-03-05 21:28:54
回答 2查看 9.8K关注 0票数 22

在阅读了this的帖子后,我可以理解AddTransientAddScopedAddSingleton之间的区别,但是我看不到它们各自的实际用法。

我的理解是

AddTransient

每次客户端请求时,都会创建一个新实例。

代码语言:javascript
复制
services.AddTransient<IDataAccess, DataAccess>();

每次客户端代码请求它时,都将返回一个新的DataAccess对象。更像是一个构造函数。

AddTransient的用法

在我们不得不访问数据库来读取和更新数据库并销毁访问对象(DataAccess)的情况下,最好使用AddTransient -不确定线程的安全性。

AddScoped

为每个http web请求创建一个新实例。

AddScoped用法

代码语言:javascript
复制
 services.AddScoped<ShoppingCart>(serviceProvider => ShoppingCart.GetShoppingCart(serviceProvider));

这意味着每个web请求将具有其自己购物车实例,这意味着每个用户/客户端将具有针对http web请求的其自己的购物车实例。

AddSingleton

为所有http web请求创建单个实例。

AddSingleton用法

我在一个示例应用程序中找到了这段代码,但我不明白它是如何有用的。

代码语言:javascript
复制
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 

有没有人能给出一个合适的实际例子,看看我对AddSingleton和AddScoped的理解是否正确?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42608918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档