Azure WebJobs SDK的所有文档(例如http://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-get-started/)和示例项目都指向Azure存储(表,博客和队列)的挂钩和绑定。我有兴趣将WebJobs用于与这些存储机制无关的功能,例如运行计算,调用服务或将它们与WebJobs SDK没有挂钩的其他存储服务一起使用。在这些情况下,使用WebJobs SDK有什么价值吗?我对(或许不正确)的印象是,sdk为管理自己的作业执行提供了许多其他好处,比如控制在单个线程中运行阻塞而在后台运行等等,也许与操作挂钩有关启动和停止作业,以及一些挂钩到Visual Studio等。我知道我可以上传独立的EXE和脚本文件并将它们作为WebJobs运行但我进一步假设以这种方式运行更不透明并且让你对工作的可见性降低执行以及控制它们的程序化能力较低。
是否有理由在Web表,博客和队列存储服务的钩子之外使用WebJobs SDK?如果是的话,该文件在哪里?
答案 0 :(得分:8)
以下是一些我希望能回答你问题的细节。
WebJobs SDK具有绑定和触发系统,可与Microsoft Azure存储Blob,队列和表以及Service Bus配合使用。绑定系统可以轻松编写使用BCL类型读取或写入Microsoft Azure存储对象的代码。只要在队列或Blob中收到任何新数据,触发系统就会调用代码中的函数。
SDK还提供丰富的诊断和监控体验,而无需开发人员编写任何诊断和日志记录代码。
现在我们有针对特定系统的触发器,例如上面提到的那些,但你可以自己编写更多触发器和绑定。我们将在此场景的基础上构建并在将来提供丰富的可扩展性故事,以便您可以为自己的系统/场景(如SqlServer等)编写触发器。
不必使用Azure存储的情况示例如下。此原型显示了一个FileWatcher,它显示了在目录中检测到新文件时如何触发函数。 https://github.com/rustd/WebJobsSDKSamples/tree/master/FileWatcher
您还可以使用JobHost.RunOnBackgroundThread或JobHost.Call()在后台处理任何内容。 SDK将为您提供记录,管理这些功能的执行的好处,例如,如果它们长时间运行并且永远不会完成,则取消这些功能,而不必终止该过程。我们很快就会添加异步支持,因此您的函数也可以返回Task。
您可以在WebJobs中使用SDK。 WebJobs平台为您提供流程管理,例如启动/停止WebJob以及其他好处,例如扩展WebJob等。
正如您所提到的,如果您只是上传独立的EXE,您将无法获得对功能详细信息和日志记录的全面了解。
答案 1 :(得分:2)
要使用Azure网站WebJobs功能,您不必使用WebJobs SDK。
WebJobs SDK目前支持Azure存储队列,blob,表和Azure服务总线队列,如果您不需要其中任何一个,则不需要使用它。
答案 2 :(得分:1)
WebJobs SDK不仅是触发器(存储和服务总线)。即使您不使用触发器,WebJobs仪表板也非常有价值 - 您可以获得一些强大的诊断功能,并且可以更好地调试您的生产系统。