目前,我维护一个作为 Windows 服务运行的应用程序,从消息队列服务器读取消息,处理它们并将结果放回消息队列服务器。但它还包含一个可通过 Web API 访问的健康监控组件。它被实现为一个控制台应用程序,它使用 Katana 来自托管健康监控子系统。
我现在正试图弄清楚我们是否可以在 RTM 之后将其移至 .NET Core 和 ASP.NET Core。我知道 Windows 服务部分无法移植,但我也可以将控制台应用程序作为分离的 Docker 容器运行,以在主要功能方面基本上实现相同的目标。但是健康监测将如何运作?据我所知,Katana 项目已经更新到 ASP.NET 5(我猜是大改名之前的 ASP.NET Core 1),但它不能在 .NET Core CLR 上运行。Katana 将需要完整的 CLR。所以这意味着Katana已经出局了。
这是否意味着我们构建应用程序的方式无法使用 .NET Core?还是通过 Kestrel 托管应用程序不排除在第一次请求之前运行代码的可能性?使用 IIS,应用程序在第一个请求之前不会存在(除非您使用自动启动,但它更多的是速度优化,而不是应用程序的行为类似于“始终运行的应用程序”),并且通常应用程序是请求-基于而不是持续运行。IIS 托管应用程序中的后台线程是一个非常糟糕的主意。这和红隼一样吗?或者 DNX 会启动您的应用程序并使其一直运行直到它关闭,就像控制台应用程序一样,这样我们就可以运行我们想要的所有后台线程?