我已经创造了一些Azure的Webjobs使用触发器和我刚刚得知Azure的功能 。
据我了解Azure的功能似乎与天青Webjobs功能重叠和我有一些难以理解时功能和Webjob之间进行选择:
不像Webjobs,函数只能被触发,它并没有被设计为运行连续的过程(但你可以编写代码来创建一个连续函数)。
您可以编写使用许多语言(C#,Node.js的,蟒蛇...)Webjobs和功能,但你可以从Azure的门户写你的功能,所以它更容易和更快速地开发测试和部署的功能。
而功能运行使用经典/动态应用服务计划中的应用程序服务的web应用程序,API的应用程序,或移动应用的上下文Webjobs作为后台进程运行。
关于缩放,功能似乎给更多的可能性,因为你可以使用动态应用服务计划,你可以扩展一个单一的功能,而对于webjob你必须扩展整个Web应用程序。
所以肯定是有定价的差异,如果您有运行,就可以用它无需任何额外的成本运行webjob,但如果我没有一个现有的Web App的现有的网络应用程序,我必须编写代码来触发队列我应该使用webjob或功能?
是否有其他方面的考虑要记住,当你需要选择呢?
这里有应用程序服务中的几个选项。 我不会碰的逻辑应用程序或Azure的自动化,这也触及这个空间。
Azure的WebJobs
这篇文章是老老实实最好的解释,但我会在这里总结一下。
按需WebJobs又名。 计划WebJobs又名。 触发WebJobs
触发WebJobs是被当URL被调用时或运行一次WebJobs 时间表属性存在于schedule.job 。 计划WebJobs只是WebJobs已经创造了打电话的时间表我们的网址蔚蓝的调度工作,但我们也支持日程表属性,如前面提到的。
摘要:
-
+
可执行文件/脚本需求 -
+
计划执行 -
-
有可能引发通过.scm端点 -
-
缩放是手动 -
-
始终是必需的VM
连续WebJobs(非SDK)
这些工作一直运行下去,我们将唤醒他们,当他们崩溃。 您需要启用始终在为这些工作,这意味着在基础层及以上运行它们。
摘要:
-
+
可执行文件/脚本始终运行 -
-
需要始终在-基本层及以上 -
-
始终是必需的VM
连续WebJobs与WebJobs SDK
这些都不是什么从“WebJobs功能”的观点。 从本质上讲,我们有这个甜蜜的SDK,我们写瞄准WebJobs,它可以让您根据简单的触发器执行代码。 我再谈谈多等一会。
摘要:
-
+
可执行文件/脚本始终运行 -
+
更丰富的记录/仪表板 -
+
触发器支持以及长时间运行的任务 -
-
需要始终在-基本层及以上 -
-
缩放是手动设置 -
-
入门可能会有点无聊 -
-
始终是必需的VM
Azure的WebJobs SDK
Azure的WebJobs SDK是WebJobs平台功能完全独立的SDK。 它的设计在WebJob中运行,但真正能在任何地方运行。 我们谁对工人的角色,甚至炳或其他云上运行他们的客户,但支持仅最大的努力。
该SDK是只是使其易于运行反应的一些事件的一些代码,使绑定到服务的/ etc。 简单。 这是最好老老实实在一些涉及文档 ,但它的心脏是“事件” +“代码”的性质。 我们也做了一些很酷的extensiblity的工作,但这是次要的核心目的。
摘要:
- 大多数的这些上述
-
+
您可以扩展和运行任何你想要的。 完全控制。 -
-
HTTP的东西是有点靠不住,但它的工作原理
Azure的功能
Azure的功能是所有关于采取WebJobs SDK的这一核心目的,收留了它作为一种服务,并使其易于上手与其他语言。 我们在这里介绍了“无服务器”的概念,因为它使一个很大的意义这么做 - 我们知道如何将我们的SDK尺度,所以我们能为你做的事情智能化。
Azure的功能是一个非常严重管理经验。 我们不支持把你自己的主机。 目前,我们不支持自定义扩展,但它的东西,我们正在调查。 我们自以为是你可以和不能做什么,但我们启用了的东西,他们是光滑,易于使用和管理。
大多数的我们已经做了改进功能“框架”事情经过WebJobs SDK,虽然。 举例来说,我们将上传新的NuGet为WebJobs这真的急剧增加记录的速度,这对WebJobs SDK用户巨大的好处PERF。 在航运功能为“WebJobs SDK即服务”我们确实提高了很多经验的问题。
-
+
语言支持很多 -
+
全面管理,动态调整 -
+
易于使用的门户瓦特/ UX用于管理连接的/ etc。 -
-
主机不能自定义(还) -
~
运行在一个单独的“应用程序”,它需要在您的回购一些配置,但带来长期的维护变得更加容易。 -
~
无需更换工具(但)有些工具目前正处于Alpha或预览- https://www.npmjs.com/package/azurefunctions (更新2017年2月:Visual Studio工具现在预览可用Azure的功能: https://开头的博客。 msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/ )
我因为我的功能可能偏向是我们的最新和最伟大的,但随时拍摄更多的利弊的功能我的方式。
我可能会最终公布其详细阐述更多的博客,但我试图保持这个尽可能简洁的这个论坛。
基于所述WebJobs SDK Azure的功能,它们提供了大部分的WebJobs已经上市,但也有一些新酷功能的功能。
在触发方面,除了那些已经可用于WebJobs(如服务总线,存储队列,存储斑点,CRON日程表,网络挂接,EventHub和文件云存储提供商),Azure的功能可以被触发为的API。 和HTTP调用不需要捻凭据,但可以通过Azure的AD和第三方身份提供者进行身份验证。
对于输出 ,唯一的区别是,当通过HTTP调用的函数可以返回响应。
两者都支持各种各样的语言 ,包括:bash的(.SH),批处理(.bat / .CMD),C#,F#,Node.js的,PHP,PowerShell中,和Python。
作为目前在预览的功能, 工具仍不理想。 但是,微软正在努力就可以了。 希望我们得到开发和本地测试功能,我们目前对使用Visual Studio WebJobs做相同的灵活性。
通过功能带来的最显著和凉爽的优势是具有一个“无服务器”的模式 ,在此我们并不需要管理VM实例或增减动态服务计划的替代方案; 这一切都为管理我们。 此外,由于不具有专用的情况下,我们只需要为我们实际使用的资源。
这两个之间在这里更详细的比较: https://blog.kloud.com.au/2016/09/14/azure-functions-or-webjobs/
HTH :)
根据该文档 Azure的功能有WebJobs不如下:
- 自动缩放(CPU和存储器被根据在运行时确定需要缩放)
- 按次收费运用价格(消费计划,而不是应用程序服务计划)
- 更多的触发事件(如网络挂接)
- 在浏览器的开发(Visual Studio中仍有可能)
- F#支持
简单地说:Azure的功能是较新的动物。 如果你不已经有一个应用程序服务计划,我会用函数去,因为对于长期的,我不明白为什么WebJobs开始会更好任何原因(功能工具可能不是已经为稳定虽然)。
我想两个点添加到上述长和点点的旧文章。 如果你在蔚蓝的功能选择消费计划,以下是限制
如果你想运行的任何作业时间超过10分钟选择webjobs。 Azure的功能,仅运行5分钟,在默认情况下,如果你的进程超过5分钟,然后蔚蓝函数抛出超时异常。 您可以增加超时在host.json 10分钟 。
注意:是,如果你正在使用的应用程序服务计划蔚蓝的功能没有超时的问题。
区分另一个原因是。 如果你使用蔚蓝的功能,然后因为机器(容器)的动态创建,一旦它被用来摧毁了你的初始启动时间将是缓慢的。
我意识到我很晚才到这个答案了比赛,但因为这仍然是在谷歌顶部搜索结果,我想给这个话题严格从成本角度考虑一定的指导意义,因为它似乎是OP大约有成本一定的担忧。 已经有这里谈论的技术限制以及每个服务是如何工作的一些细节上的伟大的答案,所以我不打算重提这些问题的答案。
如果你绝对需要的东西,“免费”运行 (在不增加成本了你已经为你支付的Web应用程序),那么你有两个选择:
- Webjobs - 部署在保留现有的Web应用程序,并使用相同的资源的Web应用程序。 还有就是用webjobs没有额外的货币成本,但有前面已经提到一些限制可能会导致在你的web应用程序的性能开销。
- 功能 - 当使用消费计划,你被分配一定量的免费处决。 在写这篇文章时的数量实际上是相当高的,100个免费处决。 然而,100万个执行限制并不是很可能给你带来麻烦的限制; 它是400K GB-S(千兆字节秒)。 这基本上是你的功能使用的它运行的秒数相乘的内存量的计算(见官方计算此定价页 )。 你会惊奇地发现这个免费的配股得到的速度有多快用完了。
如果您担心成本,包括但不限于根本没有成本 ,那么你有更多的选择。
- 功能 - 您可以在消费计划或为价格相对便宜的应用程序服务计划运行。 但请记住,在GB-S的计费模式。 如果您使用的是消费计划和正在做的频繁,“重”的工作 - 你可能是一个大的法案感到惊讶。
- 云服务 - 这个选项还没有被讨论作为替代,主要是因为OP没有问一下。 但是,这也是一个可行的选择。 云服务最终只是虚拟机在云中运行,所以你可以运行,你需要对他们的任何背景的工作,他们比例放大/缩小不错(虽然你必须要连接自己的执行触发器,略有不便相比webjobs /功能)。 他们有与它们相关的(因为你每个实例支付是否使用与否)以上的初始成本,但如果你有一个需要不断运行,并做了很多“重”吊装作业,然后云服务可能是一个更好的选择因为它更容易管理/监控的固定价格比VM处决和技嘉秒,在我看来。 关于云服务的另一个好处是,你永远不用担心超时或一些以前的答案提到的其他限制。
如果您有兴趣通过一些特定的场景读书,为什么我会选择一个比其他(webjobs,功能,云服务),我刚刚写了一篇博客文章上webjobs VS功能VS云服务 。