【问题标题】:Run Console App in Azure - without WebJobs在 Azure 中运行控制台应用程序 - 没有 WebJobs
【发布时间】:2018-12-12 13:27:47
【问题描述】:


那么,正如标题所说,有没有办法在 Azure 中运行常规的 .Net FW 控制台应用程序?
有关更多信息,我的意思是什么?我有一个简单的控制台应用程序,它在无限循环中执行某些操作并为我检查一些值,所以没什么大不了的。它还使用线程。
现在,我真的很想避免为此使用 WebJobs 或 Azure 函数。
有没有办法做到这一点?如果有可能,怎么做?

提前谢谢..

【问题讨论】:

  • 为什么要避免在这种情况下可能真正有用的两件事?如果您不想使用 azure 的优势,那么尝试在那里运行您的工作负载有什么意义?
  • @PeterBons 嘿.. 感谢您的关注。假设这是一项研究,我只想知道替代方案。利弊也。我的意思是我用谷歌搜索了很多,我看到的只是 WebJobs 和 Azure 函数的使用。我们是否仅限于此?没有其他选择吗?
  • 是的,试试 azure 容器实例 (aci)。
  • @PeterBons 据我所知,这些都是根据请求使用的,我不能让它成为一个持久的后台控制台应用程序。我做对了吗?
  • 不,您可以在需要时运行它们,这是按使用付费的模式。尽管如果您 24/7 全天候运行它们,那么是的,还有更好的选择。我会说使用天蓝色的价格计算器并计算每项服务的成本。您可以使用下面的答案作为calculator 的输入。

标签: .net azure azure-devops azure-web-app-service


【解决方案1】:

您有几个选项(其中一些您已经提到)在 Azure 中运行控制台应用程序:

  • IaaS:运行您自己的虚拟机并在其中执行您的控制台应用程序,简单明了
  • Azure 容器实例
  • Service Fabric
  • Azure Batch:可能需要一些重写,因为它不是真正运行控制台应用程序而是任务
  • Azure 网络作业
  • Azure 函数

以下链接显示了选择适当 Azure 服务的流程图,可能会对您有所帮助: https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/compute-decision-tree

【讨论】:

  • 嘿.. 好的,当然.. 但是,我想避免运行我自己的虚拟机,当然,我不希望整个虚拟机运行一个小应用程序。我刚刚查看了 Azure Container Instance,据我所知,这些不适合用于长时间运行的进程。另外,也许我弄错了,但似乎这些不能在后台运行。
  • 有没有办法让我在 Azure 中的某个地方部署我的控制台应用程序,并让它在后台不间断地工作?并且仍然保持简单,没有虚拟机之类的东西。
【解决方案2】:

我使用 Azure Batch Service 在一个控制台应用程序中运行了多个长时间运行的任务。我使用命令行参数来决定运行哪个函数。

Program.cs

using System;

namespace MyConsoleAppRunningAsJobInAzureBatchService
{
    class Program
    {
        static int Main(string[] args)
        {
            if (args.Length < 1)
            {
                Console.WriteLine("Missing parameter... Exit program.");
                return 1;
            }

            switch (args[0].ToString())
            {
                case "-task1":
                    RunLongRunningTask1();
                    break;
                case "-task2":
                    RunLongRunningTask2();
                    break;
            }

            return 0;
        }

        private static void RunLongRunningTask1()
        {
            while (true)
            {
                // put your code here
            }
        }
    }
}

这个概念很稳定,有些作业跑了好几天。

以上是最简单的部分。我发现很难找到如何创建批处理服务作业。这可以通过使用 Batch.NET 库
https://docs.microsoft.com/en-us/azure/batch/quick-run-dotnet

我有一些代码示例,如果你想走这条路,请告诉我。

【讨论】:

  • 感谢您的回答,您能否通过添加相关命令或代码来改进您的回答。
  • 我已经为控制台应用程序添加了代码示例。
  • 我想提一下 Batch Servies 是“按需付费”,因此运行较短的任务会更便宜。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
相关资源
最近更新 更多