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

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

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

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

最佳答案

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

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

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

关于c# - .NET托管服务和Singleton服务之间的核心区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55796612/

10-11 22:39
查看更多