C# 托管服务和单例服务之间的.NET核心差异

C# 托管服务和单例服务之间的.NET核心差异,c#,.net,asp.net-mvc,asp.net-core,.net-core,C#,.net,Asp.net Mvc,Asp.net Core,.net Core,从.NETCore2.1开始,我们现在可以使用运行后台任务 我相信,通过向具有Singleton作用域的服务容器添加服务类,我们可以实现同样的效果 与单例范围的服务相比,托管服务有什么好处?关键区别是什么 我们可以将单例作用域服务注入控制器,并使用每个新请求对其进行操作。但是,这对于托管服务是不可能的。托管服务实际上是一个单例服务。不同之处在于托管服务具有特定的生存期:当(web)主机启动时,托管服务启动;当(web)主机关闭时,托管服务也显式终止。这允许您包括启动或关闭行为,例如建立或终止与外

从.NETCore2.1开始,我们现在可以使用运行后台任务

我相信,通过向具有Singleton作用域的服务容器添加服务类,我们可以实现同样的效果

与单例范围的服务相比,托管服务有什么好处?关键区别是什么


我们可以将单例作用域服务注入控制器,并使用每个新请求对其进行操作。但是,这对于托管服务是不可能的。

托管服务实际上是一个单例服务。不同之处在于托管服务具有特定的生存期:当(web)主机启动时,托管服务启动;当(web)主机关闭时,托管服务也显式终止。这允许您包括启动或关闭行为,例如建立或终止与外部服务的连接

相反,注册为singleton的普通服务只有在第一次解析时才会实例化,而在应用程序关闭期间服务提供者被释放时才会被释放

因此,托管服务在应用程序启动或停止时为您提供了更多关于如何处理服务的控制。但这并没有多少魔力