.net core Windows Service vs Worker 模板

Posted

技术标签:

【中文标题】.net core Windows Service vs Worker 模板【英文标题】:.net core Windows Service vs Worker Template 【发布时间】:2021-04-27 08:26:54 【问题描述】:

此问题与this SO question 接续。我只是想了解使用 this post 中的 ServiceBase 类编写的 Windows 服务与使用 WorkerTemplate 编写的 Windows 服务之间的区别,完成 here。

这个问题的原因是前者的实现是在docker上工作的,而后者不是。

如果我理解正确,WorkerTemplate 是一种尝试,通过提供package 来更轻松地开发 Windows 服务()。那为什么当我使用 ServiceBase 和 IHostingLifetime 运行应用程序时,它在容器中运行良好,而当我使用 WorkerTemplate 时,它​​会抛出服务超时错误。

注意:这两种实现在本地以及在服务器上部署时都可以正常工作。此行为仅在容器中观察到。

【问题讨论】:

【参考方案1】:

在我看来,第一个是用来托管 asp.net 核心应用程序作为 windows 服务。第二个是将应用程序托管为 Web 应用程序。

这是运行工作器服务的两种方式之间的主要区别。 asp.net core worker 服务也是同一个。当 asp.net core 应用启动时,asp.net core 会运行 work 服务。

容器无法运行 windows 服务,但可以运行 asp.net core 应用程序。

【讨论】:

以上是关于.net core Windows Service vs Worker 模板的主要内容,如果未能解决你的问题,请参考以下文章

从 .Net Core Stateless Service 调用 .Net 框架 Service Fabric Actor

.Net Core App - 命令行格式异常

.NET Core 3.1 通过 Web Service 读写 Salesforce 数据

NodeJs &.net core connect Azure service bus

Asp.Net Core:IAuthorizationFilter 和 Authentication Service 的执行顺序

在 ASP.NET Core 中从贝宝执行付款时出现 INTERNAL_SERVICE_ERROR