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的形式运行它们,但我进一步假设以这种方式运行更加不透明,并且对工作的可见性降低执行,以及提供较少的编程能力来控制它们。
除了连接到Azure Table,Blog和Queue存储服务之外,是否有理由使用WebJobs SDK?如果是这样,该文档在哪里?
最佳答案
以下是一些更多详细信息,希望它们能回答您的问题。
WebJobs SDK具有绑定和触发系统,可与Microsoft Azure存储Blob,队列和表以及服务总线配合使用。绑定系统使编写使用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,您将不会对功能详细信息和日志有太多了解。