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

Posted

技术标签:

【中文标题】Azure WebJobs SDK - 在啥情况下需要创建 JobHost 对象?【英文标题】:Azure WebJobs SDK - in what scenarios is creation of a JobHost object required?Azure WebJobs SDK - 在什么情况下需要创建 JobHost 对象? 【发布时间】:2014-11-06 20:02:55 【问题描述】:

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

static void Main()

    JobHost h = new JobHost();
    h.RunAndBlock();

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

static void Main()

    // Do something...

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

【问题讨论】:

【参考方案1】:

WebJobs 和 WebJobs SDK 是两个不同的东西,尽管它们的名称相似。

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

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

【讨论】:

> ...或者如果您希望您的方法显示在功能仪表板中。【参考方案2】:

当您想要与 Azure 存储(表存储、队列、blob)或 ServiceBus 交互时,如果您想要将您的功能公开给 Azure WebJobs 仪表板,您需要 Jobs Host Configuration。

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

static ISubscriptions _subscriptions;

static void Main()

    Process();


public static void Process()

    _subscriptions.DoWork();

【讨论】:

我还发现,如果您想将方法公开到仪表板以便调用它们,则需要 JobHost 配置。 (见***.com/questions/25811659/…)。只是一个建议:您可能希望简化您的示例以删除 Main() 下的前 3 行,因为对于 Webjobs 的新手来说,您的代码可能看起来是特定于 Webjobs 的。这意味着,您可以通过仅在 Main 中使用 Process() 来显着概括和简化您的代码示例。 另外,如果您更新您的答案以包括如果您想将您的方法公开给仪表板以供调用,则需要 JobHost 的部分,我会将答案标记为已接受。

以上是关于Azure WebJobs SDK - 在啥情况下需要创建 JobHost 对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地测试 Azure Webjobs SDK 项目?

在 Azure Webjobs SDK 中设置 nextVisibleTime

什么是 Azure WebJobs SDK 3.0 版本的 host.Call()

如何在没有 SDK 的情况下为 webjobs 设置警报

为啥我收到异常 Azure WebJobs SDK Dashboard connection string is missing or empty 当它根本不为空时?

Azure WebJob SDK 服务总线文档?