。NET Core DI中,单例生存期服务如何处理并发请求?

问题描述 投票:1回答:1

在.NET Core DI的上下文中,如果一个服务被注册为Singleton(生存期,不要与模式混淆,它将能够处理多个并发请求吗?

文档说:“每个后续请求都使用相同的实例。”假设我们的数据访问实现是这样注册的。这是否意味着它不会扩展和处理并发请求,并且每个请求实质上都会排队使用该服务?

.net performance .net-core dependency-injection singleton
1个回答
0
投票

这是否暗示它不会扩展和处理并发请求,并且每个请求实质上都会排队使用该服务?

完全没有。当将服务声明为Singleton时,just定义DI的生存期(创建和处置行为)。不多不少。它对线程和服务请求的访问方式没有任何影响。因此,您必须注意服务的并发性问题,并在不是线程安全的代码的所有位置定义锁。

[特别是,如果您使用的是像Entity Framework这样的ORM,则应该知道其DbContext不是线程安全的,并且将其声明为Singleton会引起许多并发问题,应避免使用。

© www.soinside.com 2019 - 2024. All rights reserved.