我想知道......为什么微软会使用它:
services.AddTransient<IEmailSender, AuthMessageSender>();
在他们的ASP.NET Core中发送电子邮件的教程中,而不是:
services.AddSingleton<IEmailSender, AuthMessageSender>();
该服务是否应该在项目的整个生命周期内保持不变? 这有什么缺点?
谢谢:)
答案 0 :(得分:0)
他们使用 Transient 的原因是因为他们的示例基于忘记密码。
忘记密码是次要的,它不做主应用程序逻辑的一部分,因此在需要时创建服务并在使用后丢弃它在资源方面更便宜。这就是他们使用 Transient 的原因。
如果它是一个单例,一旦创建它就会一直在内存中,对于很少发生的忘记密码的情况,这是不值得的。