.NET托管服务和Singleton服务之间的核心区别

时间:2019-04-22 15:10:52

标签: c# .net asp.net-mvc asp.net-core .net-core

从.NET Core 2.1开始,我们现在可以使用hosted service运行后台任务。

我相信我们可以通过将服务类添加到具有Singleton范围的服务容器来实现相同目的。

与具有单例作用域的服务相比,拥有托管服务有什么好处?关键区别是什么?

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

1 个答案:

答案 0 :(得分:4)

托管服务实际上是单例服务。区别在于,托管服务具有特定的生存期:(web)主机启动时,托管服务将启动,而(web)主机关闭时,托管服务也将明确终止。这允许您包括启动或关闭行为,例如建立或终止与外部服务的连接。

相反,注册为单例的普通服务仅在首次解析时实例化,并在应用程序关闭期间处置服务提供商时处置。

因此,托管服务使您可以更好地控制应用程序启动或停止时如何处理服务。但这并没有很多魔术。