gpt4 book ai didi

.net - 为什么我不应该将我的服务设为单例 (ioc)?

转载 作者:行者123 更新时间:2023-12-04 08:50:19 45 4
gpt4 key购买 nike

重要提示:请注意,我并不是说单例具有私有(private)构造函数和静态实例变量(或有人建议使用静态类),而是单例在应用程序生命周期内从控制容器的反转返回相同的实例。

许多容器默认使用较短的生命周期。每个依赖项(或每个请求)一个新实例,或者每个范围一个实例(例如 HTTP 请求)。

我想知道为什么容器推广短命的对象而不是长命的?

请注意,我通常只在容器中注册我的服务。如果我需要创建域模型等,我会在容器中注册工厂。

最佳答案

做了一些更多的研究。

因为使用较短的生命周期时更容易处理特定于 session 的信息。混合生命周期也会使事情复杂化。

每次您在单个实例服务中使用作用域依赖项时,它都会在启动时正常工作。但是,范围服务通常不会被设计为长期存在的。如果他们使用诸如套接字连接或数据库连接之类的外部资源,它可能会在某一时刻丢失。

由于作用域服务不是为此而设计的,它可能会开始失败,因此单实例服务也会开始失败并继续这样做,直到重新启动应用程序。

关于.net - 为什么我不应该将我的服务设为单例 (ioc)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7123201/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com