C# 在没有虚拟机的情况下在Azure上运行Windows服务是否有其他选择?

C# 在没有虚拟机的情况下在Azure上运行Windows服务是否有其他选择?,c#,asp.net,asp.net-mvc,azure,amazon-ec2,C#,Asp.net,Asp.net Mvc,Azure,Amazon Ec2,我们开发了一个窗口服务来处理Azure队列和添加/更新/删除数据库记录[仅与数据库相关的实现] 当前实现[运行良好,没有问题]: 创建了一个窗口服务 部署在Azure VM上 我们正试图找到更好的替代方案,帮助将我们的业务实现[目前包装为Windows服务]部署到Azure网站和/或Azure云服务中 一种可能的选择: 创建ASP.NET Mvc网站 创建3个动作 a。启动[启动静态计时器] b。停止[停止静态计时器] c。执行[在计时器运行时通过WebRequest调用] 在Azure网站上部

我们开发了一个窗口服务来处理Azure队列和添加/更新/删除数据库记录[仅与数据库相关的实现]

当前实现[运行良好,没有问题]:

创建了一个窗口服务 部署在Azure VM上

我们正试图找到更好的替代方案,帮助将我们的业务实现[目前包装为Windows服务]部署到Azure网站和/或Azure云服务中

一种可能的选择:

  • 创建ASP.NET Mvc网站
  • 创建3个动作

    a。启动[启动静态计时器]

    b。停止[停止静态计时器]

    c。执行[在计时器运行时通过WebRequest调用]

  • 在Azure网站上部署该站点

  • 1) 您是否曾经在云[Azure/Amazon或其他]上实施过上述替代方案

    2) 如果是,希望了解面临的问题及其解决方法/解决方案

    3) 有更好的选择吗


    4) Windows服务是当前场景中的最佳解决方案吗

    使用工作者角色、服务总线和云服务。它是一个更健壮的实现,并且为您所寻找的内容提供了API。检查

    那么,NT服务是做什么的呢?它从系统启动时开始,运行某种无限循环来“监听”某些内容或处理某些它知道从何处获取的内容


    工作者角色(以及web角色-这些实际上是IIS中的工作者角色)的作用也一样-Azure基础结构将启动它们(如果失败则重新启动),然后调用
    RoleEntryPoint.OnStart()
    进行初始化,然后调用
    RoleEntryPoint.Run()
    被调用,后者要么永远休眠,要么运行无限循环。基本上,它与NT服务相同,不同之处在于NT服务绑定到特定的机器,而worker/web角色绑定到“部署”——执行代码和代码设置的组合。

    Azure WebJobs也是虚拟机上Windows服务和云服务中worker角色的替代方案