2014-09-12 37 views
13

大部分与Azure的WebJobs SDK相关联的样本有启动代码,看起来像这样:Azure WebJobs SDK - 在什么情况下需要创建JobHost对象?

static void Main() 
{ 
    JobHost h = new JobHost(); 
    h.RunAndBlock(); 
} 

但是你也可以揭开序幕WebJob而无需创建一个JobHost对象是这样的:

static void Main() 
{ 
    // Do something... 
} 

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

回答

9

如果要与Azure存储(表存储,队列,Blob)或ServiceBus 进行交互,并且您希望将功能展示给Azure WebJobs控制板,则需要作业主机配置。

这是一些代码,我在一个WebJob使用不使用JobHost

static ISubscriptions _subscriptions; 

static void Main() 
{ 
    Process(); 
} 

public static void Process() 
{ 
    _subscriptions.DoWork(); 
} 
+0

我也刚刚发现,如果您想将您的方法暴露给仪表板以便可以调用它们,则需要JobHost配置。 (请参阅https://stackoverflow.com/questions/25811659/can-i-create-an-azure-webjob-that-exposes-functions-to-the-dashboard-but-doesnt)。只是一个建议:你可能想要简化你的示例,以删除Main()下的前3行,因为对于新开发Webjobs的人来说,它可能看起来像是Webjobs特定的代码。这意味着,只需在Main中添加Process(),就可以大大简化和简化代码示例。 – Emilio 2014-09-12 16:53:25

+0

此外,如果您更新答案以包含有关要求JobHost的部分(如果您想将方法公开给仪表板进行调用),我会将答案标记为已接受。 – Emilio 2014-09-12 16:54:26

16

WebJobs和WebJobs SDK是,即使他们的名字是类似于两回事。

  • WebJobs(无SDK)是Azure网站的一项功能。它是一个通用的,语言/平台不可知的引擎,可以执行作业。您可以使用多种语言编写作业,包括:节点,批处理,C#/ VB /任何其他.NET语言
  • WebJobs SDK是一个仅用于.NET的框架,它简化了编写适用于Azure存储队列的代码的任务,斑点和表格以及服务总线队列;此外,它不受Web站点的WebJobs功能限制 - 它可以在任何.NET应用程序中运行。

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

+0

<<如果您的代码不需要Azure存储/ ServiceBus,或者您想自己编写所有轮询/日志记录,则不需要Azure WebJobs SDK。 >> ...或者如果您希望您的方法显示在功能仪表板中。 – Emilio 2014-09-13 17:09:12

相关问题