从.NET Core 2.1开始,我们现在可以使用hosted service运行后台任务。
我相信我们可以通过将服务类添加到具有Singleton范围的服务容器来实现相同目的。
与具有单例作用域的服务相比,拥有托管服务有什么好处?关键区别是什么?
我们可以将单例作用域服务注入控制器,并在每个新请求中对其进行操作。但是,对于托管服务,这是不可能的。
答案 0 :(得分:4)
托管服务实际上是单例服务。区别在于,托管服务具有特定的生存期:(web)主机启动时,托管服务将启动,而(web)主机关闭时,托管服务也将明确终止。这允许您包括启动或关闭行为,例如建立或终止与外部服务的连接。
相反,注册为单例的普通服务仅在首次解析时实例化,并在应用程序关闭期间处置服务提供商时处置。
因此,托管服务使您可以更好地控制应用程序启动或停止时如何处理服务。但这并没有很多魔术。