IoC 生命周期差异

IoC lifetime difference

我是C#新手,刚开始学习web中的IoCapi。 TransientPerWebRequest 生活方式有什么区别

抱歉英语不好。

  • 单例

这是卑鄙的 "one instance for all"。每次调用 Resolve(甚至是隐式调用)时,您都会得到相同的对象

  • 瞬态

singletone相反。你会得到多少你调用的对象Resolve

  • PerWebRequest

了解一个请求如何 Singleton 和另一个请求如何 transient(您将获得与收到的请求一样多的对象)

有关详细信息,请阅读 catle.windsor manual or official asp.net docs

PerWebRequest 范围从网络呼叫开始持续到网络呼叫结束。只要您持有对已解析实体的引用,瞬态就会存在。 AddTransient 方法用于将抽象类型映射到为需要它的每个对象单独实例化的具体服务。

参考:Asp.Net Dependency Injection

Transient 意味着您拥有的对象与您称为 Ioc 容器的对象一样多。这也意味着您必须处置您创建的所有 IDisposable 项目。

PerWebRequest 意味着每个请求都有 1 个实例,因此如果服务器上有多个请求 运行,每个请求都会有自己的对象实例。 IDisposable 对象可以由 IoC 框架处理。