几年前,IoC 性能指南指出,IoC 容器应仅用于解析长期实例(基本上是单例),而应使用单例工厂(由容器保存)创建瞬态类型对象。
我现在正在阅读有关 ASP.NET Core 的内容,我看到的几个示例对其注入的对象使用瞬态生命周期。现在瞬态是提供静态方法(并且无状态)的服务的首选方法,是否发生了变化?
“长寿实例”的概念并没有说明它们的生命周期或生活方式,而是从消费者的角度来看,它们只有一个实例。他们是无国籍的.
换句话说,“长寿实例”是指services or 依赖关系,而“短期实例”指的是以数据为中心的对象,例如实体、DTO、消息和视图模型。
这些服务由您创建和管理成分根 https://freecontent.manning.com/dependency-injection-in-net-2nd-edition-understanding-the-composition-root/(通常是,但不一定是 DI 容器),而以数据为中心的对象由应用程序代码直接管理。换句话说,那些“长期存在的对象”由组合根“更新”,而“短期对象”由应用程序代码本身更新。
这些以数据为中心的对象是易失性的,它们通常只在请求的持续时间内(甚至更短)存在,尽管它们可能会被缓存并在应用程序存在期间一直存在。
依赖关系也可以存在很短的持续时间,但通常是在请求的持续时间内。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)