在单个Azure Web角色中组合多个服务

时间:2017-03-07 04:13:29

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

我在Azure上托管了一个Web应用程序,它可以在很短的时间内完成角色以执行任务。这项任务是必要的,所以我离不开它。我希望将这些服务组合起来并将它们分配给一个角色,这样当服务在一小时内运行十次时,我就不会收到十个小时的使用费。

我在2012年创建了一篇博文和potential solution。但是,这个项目已经过时了,使用MVC3,并使用了几年来一直没有的软件包。试图让它发挥作用是不可行的。

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

1 个答案:

答案 0 :(得分:1)

  

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

     

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

我同意David Makogon的观点,网络/工作者角色的内容多年来没有改变。如果您希望在Web角色中加入后台处理,您仍然可以在WebRole类中创建Web角色并覆盖 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);

        }
    }
}