Azure WebJobs SDK - 在什么情况下需要创建JobHost对象?

Emi*_*lio 16 azure azure-webjobs azure-webjobssdk

与Azure WebJobs SDK关联的大多数示例都具有如下所示的启动代码:

static void Main()
{
    JobHost h = new JobHost();
    h.RunAndBlock();
}
Run Code Online (Sandbox Code Playgroud)

但是,您也可以在不创建如下JobHost对象的情况下启动WebJob :

static void Main()
{
    // Do something...
}
Run Code Online (Sandbox Code Playgroud)

在什么情况下是JobHost必要的?

Vic*_*aci 18

WebJobs和WebJobs SDK是两个不同的东西,即使它们的名字相似.

  • WebJobs(没有SDK)是Azure网站的一项功能.它是一个通用的,语言/平台无关的引擎,可以执行作业.您可以使用多种语言编写作业,包括:node,batch,C#/ VB /任何其他.NET语言
  • WebJobs SDK是一个仅适用于.NET的框架,它简化了编写适用于Azure存储队列,blob和表以及Service Bus队列的代码的任务; 此外,它不依赖于Web站点的WebJobs功能 - 它可以在任何.NET应用程序中运行.

JobHost是Azure WebJobs SDK的入口点.它负责索引,发布,监视和调度使用WebJobs SDK工件定义的函数.无论何时想要调用WebJobs SDK函数(触发或手动/调用),都需要一个实例JobHost.如果您的代码不需要Azure存储/ ServiceBus,或者您想自己编写所有轮询/日志记录,则不需要Azure WebJobs SDK.


lop*_*oni 10

如果要与Azure存储(表存储,队列,blob)或ServiceBus进行交互,并且希望将功能公开给Azure WebJobs控制板,则需要"作业主机配置" .

这是我在不使用JobHost的WebJob中使用的一些代码

static ISubscriptions _subscriptions;

static void Main()
{
    Process();
}

public static void Process()
{
    _subscriptions.DoWork();
}
Run Code Online (Sandbox Code Playgroud)