将电子邮件发送为Scoped Vs. ASP.NET Core中的瞬态

时间:2017-03-01 17:16:41

标签: asp.net-core asp.net-core-mvc asp.net-core-webapi

我想知道......为什么微软会使用它:

 services.AddTransient<IEmailSender, AuthMessageSender>();

在他们的ASP.NET Core中发送电子邮件的教程中,而不是:

 services.AddSingleton<IEmailSender, AuthMessageSender>();

该服务是否应该在项目的整个生命周期内保持不变? 这有什么缺点?

谢谢:)

1 个答案:

答案 0 :(得分:0)

他们使用 Transient 的原因是因为他们的示例基于忘记密码。

忘记密码是次要的,它不做主应用程序逻辑的一部分,因此在需要时创建服务并在使用后丢弃它在资源方面更便宜。这就是他们使用 Transient 的原因。

如果它是一个单例,一旦创建它就会一直在内存中,对于很少发生的忘记密码的情况,这是不值得的。