C# 简单喷油器术语澄清

C# 简单喷油器术语澄清,c#,.net,asp.net-mvc,asp.net-web-api,simple-injector,C#,.net,Asp.net Mvc,Asp.net Web Api,Simple Injector,在Simple Injector中有这样一句话:“将为每个请求创建一个服务类型的新实例(用于调用GetInstance和作为对象图一部分的实例)。” 我有点困惑,请求是什么意思它是像http请求一样的请求,还是从容器中解析服务(实例)的请求 部分是术语寿命;生存期由container.Options.DefaultScopedLifestyle=new WebApiRequestLifestyle()定义?默认情况下使用Transient,这意味着每次请求类型时都将创建一个新实例 如果要对整个W

在Simple Injector中有这样一句话:“将为每个请求创建一个服务类型的新实例(用于调用GetInstance和作为对象图一部分的实例)。”

我有点困惑,请求是什么意思它是像http请求一样的请求,还是从容器中解析服务(实例)的请求


部分是术语寿命;生存期由
container.Options.DefaultScopedLifestyle=new WebApiRequestLifestyle()定义

默认情况下使用
Transient
,这意味着每次请求类型时都将创建一个新实例

如果要对整个Web请求重用实例,也可以使用
Web请求


我同意。“请求”的用法令人困惑。在该段的上下文中,“请求”是指“从容器请求实例的人”。因此,您可以使用GetInstance请求insrance,也可以使用构造函数参数请求实例;让我问一下关于Singleton的问题-如果我使用web请求生存期,Singleton实例只为一个用户和一个用户创建,或者是在任何用户的请求中共享的-Singleton在我重新启动IIS之前都是活动的?需要明确的是,我的用例是创建工作单元管理器,但每个请求只能有一个此管理器,而不能在请求之间共享…
Singleton
只在应用程序的每个生命周期创建一个实例。所以每个人都得到了相同的实例。只有当appool被回收或者你重新启动网站时,才会创建一个新实例。我已经测试了你所说的,但不幸的是你错了。默认情况下,带有
WebRequestLifestyle
的SI容器会在来自容器的每个服务请求上返回新实例。如果要使用同一实例,则必须指定
生活方式。作用域
。不管怎样,谢谢你们的回复,你们一定会帮助我更好的理解简易注射器
WebRequestLifestyle
将在每个web请求上返回一个新的。因此,如果您在web请求期间多次请求一个实例,您将得到相同的实例。文档的默认设置是
Transient
,它总是返回一个新实例,即使它是否在同一个web请求中。如果不添加liftestyle配置,将使用
瞬态
。不正确。请参阅Global.asax.cs查找第22行中的和。在第一次启动应用程序时,您应该看到“A>B”(在应用程序中使用的是
IStackManager
的同一个实例,并尝试删除
生活方式。在第22行A中,您将只看到“A”-每个请求都使用
IStackManager
的新实例。