【问题标题】:Convert .NET Windows Service to Azure Web Job将 .NET Windows 服务转换为 Azure Web 作业
【发布时间】:2017-11-15 19:05:33
【问题描述】:

我有一个 .NET Windows 服务并希望转换为 Azure Web Jobs。请让我知道我是否可以将它作为 Azure Web 作业或转换的推荐来托管。

【问题讨论】:

  • 请提供更多信息以获得正确的指导。该服务试图完成什么?它将在哪里举办?您的问题的答案显然是肯定的,但这并不意味着这样做是个好主意。
  • 请提供更多信息。你的工作是在计时器上运行的吗?
  • 在我们的项目中,我们正在将 Azure Web 作业转换为 Windows 服务,因为 Azure 很烂!

标签: .net azure windows-services azure-webjobs


【解决方案1】:

很遗憾,您不能直接在 Azure PaaS 解决方案中托管 Windows 服务,除非它是使用 TopShelf 构建的。您的选择是:

  1. 使用 Azure 虚拟机托管 Windows 服务
  2. 转换 Windows 服务,使其可以托管在 Azure PaaS 中

对于转换,最简单的计划通常如下:

  1. 创建一个新的 .NET 控制台应用程序
  2. 将所有逻辑从您的 Windows 服务移到 .NET 控制台应用程序中
  3. 使控制台应用程序工作,以便一旦您运行它,它就会执行逻辑并退出。因此,没有可以让控制台应用程序永远运行的 while 循环。
  4. 将控制台应用程序发布为 Web 作业。您可以直接从 Visual Studio 发布或使用 Azure 门户上传。
  5. 安排网络作业在需要时执行。

如果您的服务使用 TopShelf,您可以跳过转换部分。

如果您的 Windows 服务正在执行其他操作而不只是执行简单的逻辑,例如它托管 WCF 或 Web Api,最简单的选择通常是将其转换为 Web 应用程序。

【讨论】:

  • 糟糕,降级到旧版控制台应用程序是一个巨大的倒退。即使是可以通过点击/使用它的端点来触发的 WCF 服务也更加干净。
【解决方案2】:

您可以将您的服务转换为控制台应用程序并将其作为连续的 Web 作业运行。只需将 run.cmd 放在将启动 .exe 文件的同一目录中(请参阅Run Background tasks with WebJobs in Azure App Service)。

【讨论】:

  • 糟糕,降级到旧版控制台应用程序是一个巨大的倒退。即使是可以通过点击/使用它的端点来触发的 WCF 服务也更加干净。
猜你喜欢
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 2015-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多