【问题标题】:Combining multiple services in a single Azure web role在单个 Azure Web 角色中组合多个服务
【发布时间】:2017-03-07 04:13:29
【问题描述】:

我在 Azure 上托管了一个 Web 应用程序,它会在短时间内启动角色来执行任务。这个任务是必须的,所以我不能没有它。我想组合这些服务并将它们分配给一个角色,这样当服务在一小时内运行十次时,我就不用为十小时的使用付费。

我找到了一篇博客文章和potential solution,创建于 2012 年。但是,这个项目已经非常过时了,它使用 MVC3,并且使用了几年不可用的软件包。试图让它发挥作用是不可行的。

一个角色的多个服务仍然是一个有效的解决方案,还是我必须采取另一种方法?

【问题讨论】:

  • Web / 工作者角色的东西多年来没有改变:它仍然只是一个 Windows Server VM,每次部署(或操作系统更新)时都会重新开始。如果您可以从启动脚本中安装服务,那么您就可以开始了。分成不同的角色是规模的函数。我相当肯定这已经在 StackOverflow 上被问过(只是现在找不到它)。 注意:我不是在讨论 Web/工作者角色与其他一些 Azure 服务的使用——这是一个相当广泛的主题,超出了这里的范围。
  • @DavidMakogon 我知道这是可能的,但不知道该怎么做。我发现的示例是完整的,但不是令人难以置信的解释性,因此尝试对现代框架做同样的事情是困难的,因为要找到合适的库等。我以前也从来没有真正这样做过,所以我在开始时遇到了一些麻烦。

标签: c# asp.net azure azure-web-roles


【解决方案1】:

我发现了一篇博客文章和潜在的解决方案,创建于 2012 年。但是,这个项目已经过时了,使用 MVC3,并且使用了几年来没有可用的软件包。试图让它发挥作用是不可行的。

一个角色的多个服务仍然是一个有效的解决方案,还是我必须采取另一种方法?

我同意 David Makogon 的观点,网络/工作者角色的东西多年来没有改变。如果您想在 Web 角色中包含后台处理,您仍然可以创建 Web 角色并覆盖类 WebRole 中的 Run() 方法并使用您在 Run() 方法中的逻辑。以下将消息添加到存储队列的简单示例在我这边工作正常,请参考。

public class WebRole : RoleEntryPoint
{

    public override bool OnStart()
    {
        return base.OnStart();
    }

    public override void Run()
    {
        //Replace the code with your logic

        CloudStorageAccount storageAccount = CloudStorageAccount.Parse("my connection string");
        CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();        
        CloudQueue queue = queueClient.GetQueueReference("mymessage");
    
        while (true)
        {
            CloudQueueMessage message = new CloudQueueMessage("worker run at " + DateTime.UtcNow.ToString());

            queue.AddMessage(message);
    
            System.Threading.Thread.Sleep(60000);

        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多