在应用服务中有几个选项。我不会涉及Logic Apps或Azure Automation,它们也涉及这个领域。
Azure WebJobs
这篇文章是最好的解释,但我还是在这里总结一下。
即按需WebJobs。定时WebJobs。触发WebJobs
触发的webjob是当一个URL被调用或者schedule.job中有schedule属性时运行一次的webjob。Scheduled webjob就是一个创建了Azure Scheduler Job的webjob,用于在调度中调用我们的URL,但我们也支持schedule属性,如前所述。
简介:
+可执行/脚本按需
+计划执行
-必须通过.scm端点触发
-缩放是手动的
—始终需要使用虚拟机
连续WebJobs(非SDK)
这些作业将永远运行,当它们崩溃时,我们将唤醒它们。您需要启用Always On才能使这些工作,这意味着在基本层及以上层运行它们。
简介:
+可执行/脚本始终运行
-需要一直在-基本层及以上
—始终需要使用虚拟机
连续的WebJobs与WebJobs SDK
从“WebJobs的特性”的角度来看,这些都不是什么东西。从本质上讲,我们有这个针对WebJobs编写的甜美SDK,它允许你基于简单的触发器执行代码。稍后我将详细讨论这个问题。
简介:
+可执行/脚本始终运行
+更丰富的日志/仪表板
+触发器支持与长时间运行的任务
-需要一直在-基本层及以上
-缩放是手动设置
-开始可能有点烦人
—始终需要使用虚拟机
Azure WebJobs SDK
Azure WebJobs SDK是一个完全独立于WebJobs平台特性的SDK。它被设计为在WebJob中运行,但实际上可以在任何地方运行。我们有客户在worker角色上运行它们,甚至在prem或其他云上运行,尽管支持只是最好的努力。
SDK只是为了让运行一些响应事件的代码和绑定到服务等变得容易。一件容易的事。老实说,这在一些文档中是最好的,但它的核心是“事件”+“代码”的性质。我们还做了一些很酷的扩展工作,但那是次要的核心目的。
简介:
上面提到了其中的大部分
+你可以扩展和运行任何你想要的。完全控制。
- HTTP的东西有点不稳定,但它工作
Azure的功能
Azure函数是关于WebJobs SDK的核心目的,将其作为服务托管,并使其易于使用其他语言。我们还在这里介绍了“无服务器”的概念,因为这样做很有意义——我们知道我们的SDK是如何扩展的,所以我们可以为你做智能的事情。
Azure Functions是一个非常严格管理的体验。我们不支持你自带宿主。目前,我们不支持自定义扩展,但我们正在研究。对于你能做什么,不能做什么,我们很有主见,但对于我们能实现的东西,它们很流畅,易于使用和管理。
不过,我们所做的大多数改进函数的“框架”工作都是通过WebJobs SDK完成的。例如,我们将为WebJobs上传一个新的NuGet,它真的大大提高了日志记录的速度,这对WebJobs SDK用户有巨大的性能优势。在将功能作为“WebJobs SDK即服务”发布的过程中,我们确实改进了很多体验问题。
+ Lots of languages supported
+ Fully managed, dynamic scaling
+ Easy to use portal w/ UX for managing connections/etc.
- Host not customizable (yet)
~ Runs in a separate "app" which requires some configuration in your repo, but makes long term maintenance much easier.
~ No tooling (yet) Some tooling is now in alpha or preview - https://www.npmjs.com/package/azurefunctions
(update Feb 2017:
Visual Studio Tools for Azure Functions now available in preview: https://blogs.msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/)
我可能有偏见,因为函数是我们最新最好的,但请随意射击更多的缺点函数我的方式。
我可能最终会发表一篇博客来详细阐述,但我试图在这个论坛上保持尽可能简洁。