在阅读了this的帖子后,我可以理解AddTransient
,AddScoped
和AddSingleton
之间的区别,但是我看不到它们各自的实际用法。
我的理解是
AddTransient
每次客户端请求时,都会创建一个新实例。
services.AddTransient<IDataAccess, DataAccess>();
每次客户端代码请求它时,都将返回一个新的DataAccess对象。更像是一个构造函数。
AddTransient的用法
在我们不得不访问数据库来读取和更新数据库并销毁访问对象(DataAccess)的情况下,最好使用AddTransient
-不确定线程的安全性。
AddScoped
为每个http web请求创建一个新实例。
AddScoped的用法
services.AddScoped<ShoppingCart>(serviceProvider => ShoppingCart.GetShoppingCart(serviceProvider));
这意味着每个web请求将具有其自己购物车实例,这意味着每个用户/客户端将具有针对http web请求的其自己的购物车实例。
AddSingleton
为所有http web请求创建单个实例。
AddSingleton的用法
我在一个示例应用程序中找到了这段代码,但我不明白它是如何有用的。
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
有没有人能给出一个合适的实际例子,看看我对AddSingleton和AddScoped的理解是否正确?
https://stackoverflow.com/questions/42608918
复制相似问题