我想知道 .NET MVC Core 的 Controller 类是否默认为 Singleton?
如果不是,那么框架是否会为每个请求创建多个 Controller 类对象?创建此类的新实例不是开销更大吗?
在 Java 等其他编程语言中,只创建了一个 Controller 类实例 (Servlet),并且每个请求都由一个新线程处理。在 .Net 中不是很相似吗?
最佳答案
它们实际上被声明为 Transient:
public static IMvcBuilder AddControllersAsServices(this IMvcBuilder builder)
{
if (builder == null)
{
throw new ArgumentNullException(nameof(builder));
}
var feature = new ControllerFeature();
builder.PartManager.PopulateFeature(feature);
foreach (var controller in feature.Controllers.Select(c => c.AsType()))
{
builder.Services.TryAddTransient(controller, controller);
}
builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
return builder;
}
第 (150) 行
关于c# - 净核心 : Are MVC Controllers default Singleton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57553401/