Kurz: Začínáme se sadou Azure WebJobs SDK pro zpracování na pozadí řízené událostmi
Začněte se sadou Azure WebJobs SDK pro službu Aplikace Azure Service, která umožňuje webovým aplikacím spouštět úlohy na pozadí, naplánované úlohy a reagovat na události.
Pomocí sady Visual Studio 2022 vytvořte konzolovou aplikaci .NET Core, která pomocí sady WebJobs SDK reaguje na zprávy fronty služby Azure Storage, spustí projekt místně a nakonec ji nasadí do Azure.
V tomto kurzu se naučíte, jak:
- Vytvoření konzolové aplikace
- Přidání funkce
- Místní testování
- Nasazení do Azure
- Povolení protokolování Application Insights
- Přidání vstupních a výstupních vazeb
Požadavky
Visual Studio 2022 se sadou funkcí Vývoj pro Azure Nainstalujte Visual Studio 2022.
Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
Vytvoření konzolové aplikace
V této části začnete vytvořením projektu v sadě Visual Studio 2022. Dále přidáte nástroje pro vývoj, publikování kódu a funkce Azure, které naslouchají aktivačním událostem a volání funkcí. Nakonec nastavíte protokolování konzoly, které zakáže starší nástroj pro monitorování a povolí poskytovatele konzoly s výchozím filtrováním.
Poznámka:
Postupy v tomto článku jsou ověřeny pro vytvoření konzolové aplikace .NET Core, která běží na .NET 6.0.
Vytvoření projektu
V sadě Visual Studio vyberte Soubor>nový>projekt.
V části Vytvořit nový projekt vyberte Konzolová aplikace (C#) a pak vyberte Další.
V části Konfigurovat nový projekt pojmenujte projekt WebJobsSDKSample a pak vyberte Další.
Zvolte cílovou architekturu a vyberte Vytvořit. Tento kurz byl ověřen pomocí .NET 6.0.
Instalace balíčků NuGet WebJobs
Nainstalujte nejnovější balíček NuGet webových úloh. Tento balíček zahrnuje Sadu Microsoft.Azure.WebJobs (WebJobs SDK), která umožňuje publikovat kód funkce do webových úloh ve službě Aplikace Azure Service.
Získejte nejnovější stabilní verzi 4.x balíčku NuGet Microsoft.Azure.WebJobs.Extensions.
V sadě Visual Studio přejděte na Nástroje>NuGet Správce balíčků.
Vyberte Správce balíčků konzolu. Zobrazí se seznam rutin NuGet, odkaz na dokumentaci a
PM>
vstupní bod.V následujícím příkazu nahraďte
<4_X_VERSION>
aktuálním číslem verze, které jste našli v kroku 1.Install-Package Microsoft.Azure.WebJobs.Extensions -version <4_X_VERSION>
V konzole Správce balíčků spusťte příkaz. Zobrazí se seznam rozšíření a automaticky se nainstaluje.
Vytvoření hostitele
Hostitel je kontejner modulu runtime pro funkce, které naslouchají aktivačním událostem a voláním funkcí. Následující kroky vytvoří hostitele, který implementuje IHost
, což je obecný hostitel v ASP.NET Core.
Vyberte kartu Program.cs, odeberte existující obsah a přidejte tyto
using
příkazy:using System.Threading.Tasks; using Microsoft.Extensions.Hosting;
Do Program.cs přidejte následující kód:
namespace WebJobsSDKSample { class Program { static async Task Main() { var builder = new HostBuilder(); builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); }); var host = builder.Build(); using (host) { await host.RunAsync(); } } } }
V ASP.NET Core jsou konfigurace hostitelů nastaveny voláním metod v HostBuilder
instanci. Další informace naleznete v tématu .NET Generic Host. Metoda ConfigureWebJobs
rozšíření inicializuje hostitele WebJobs. Inicializace ConfigureWebJobs
konkrétních rozšíření vazeb, jako je například rozšíření vazby úložiště, a nastavení vlastností těchto rozšíření.
Povolení protokolování konzoly
Nastavte protokolování konzoly, které používá architekturu protokolování ASP.NET Core. Tato architektura Microsoft.Extensions.Logging zahrnuje rozhraní API, které funguje s různými integrovanými poskytovateli protokolování a poskytovateli protokolování třetích stran.
Získejte nejnovější stabilní verzi
Microsoft.Extensions.Logging.Console
balíčku NuGet, která zahrnujeMicrosoft.Extensions.Logging
.V následujícím příkazu nahraďte
<6_X_VERSION>
aktuálním číslem verze, které jste našli v kroku 1. Každý typ balíčku NuGet má jedinečné číslo verze.Install-Package Microsoft.Extensions.Logging.Console -version <6_X_VERSION>
V konzole Správce balíčků vyplňte číslo aktuální verze a spusťte příkaz. Zobrazí se seznam rozšíření a automaticky se nainstaluje.
Pod kartu Program.cs přidejte tento
using
příkaz:using Microsoft.Extensions.Logging;
Pokračujte v části Program.cs, přidejte metodu
ConfigureLogging
Build
doHostBuilder
, před příkaz. MetodaAddConsole
přidá do konfigurace protokolování konzoly.builder.ConfigureLogging((context, b) => { b.AddConsole(); });
Metoda
Main
teď vypadá takto:static async Task Main() { var builder = new HostBuilder(); builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); }); builder.ConfigureLogging((context, b) => { b.AddConsole(); }); var host = builder.Build(); using (host) { await host.RunAsync(); } }
Tento doplněk provede tyto změny:
- Zakáže protokolování řídicího panelu. Řídicí panel je starší monitorovací nástroj a protokolování řídicího panelu se nedoporučuje pro produkční scénáře s vysokou propustností.
- Přidá zprostředkovatele konzoly s výchozím filtrováním.
Teď můžete přidat funkci aktivovanou zprávami přicházejícími do fronty azure Storage.
Přidání funkce
Funkce je jednotka kódu, která se spouští podle plánu, aktivuje se na základě událostí nebo se spouští na vyžádání. Trigger naslouchá události služby. V kontextu sady WebJobs SDK triggered neodkazuje na režim nasazení. WebJobs řízené událostmi nebo naplánované webové úlohy vytvořené pomocí sady SDK by se vždy měly nasazovat jako průběžné webové úlohy s povolenou funkcí AlwaysOn.
V této části vytvoříte funkci aktivovanou zprávami ve frontě azure Storage. Nejprve musíte přidat rozšíření vazby pro připojení ke službě Azure Storage.
Instalace rozšíření vazby služby Storage
Počínaje verzí 3 sady WebJobs SDK musíte pro připojení ke službám Azure Storage nainstalovat samostatný balíček rozšíření vazby úložiště.
Poznámka:
Od verze 5.x byla služba úložiště rozdělena službou úložiště Microsoft.Azure.WebJobs.Extensions.Storage a migrovala metodu AddAzureStorage()
rozšíření podle typu služby.
Získejte nejnovější stabilní verzi balíčku NuGet Microsoft.Azure.WebJobs.Extensions.Storage verze 5.x.
V následujícím příkazu nahraďte
<5_X_VERSION>
aktuálním číslem verze, které jste našli v kroku 1. Každý typ balíčku NuGet má jedinečné číslo verze.Install-Package Microsoft.Azure.WebJobs.Extensions.Storage -Version <5_X_VERSION>
V konzole Správce balíčků spusťte příkaz s aktuálním číslem verze v vstupním
PM>
bodě.Pokračujte v Program.cs v
ConfigureWebJobs
metodě rozšíření přidejteAddAzureStorageQueues
metoduHostBuilder
na instanci (předBuild
příkaz) pro inicializaci rozšíření Storage. V tomto okamžikuConfigureWebJobs
metoda vypadá takto:builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); b.AddAzureStorageQueues(); });
Po
builder
vytvoření instance přidejte doMain
metody následující kód:builder.UseEnvironment(EnvironmentName.Development);
Spuštění ve vývojovém režimu snižuje exponenciální zpomalování fronty, což může výrazně zpozdit dobu potřebnou k tomu, aby modul runtime našel zprávu a vyvolal funkci. Tento řádek kódu byste měli odebrat nebo přepnout na
Production
, až budete hotovi s vývojem a testováním.Metoda
Main
by teď měla vypadat jako v následujícím příkladu:static async Task Main() { var builder = new HostBuilder(); builder.UseEnvironment(EnvironmentName.Development); builder.ConfigureLogging((context, b) => { b.AddConsole(); }); builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); b.AddAzureStorageQueues(); }); var host = builder.Build(); using (host) { await host.RunAsync(); } }
Vytvoření funkce aktivované frontou
Atribut QueueTrigger
říká modulu runtime, aby tuto funkci volal při zápisu nové zprávy do fronty queue
služby Azure Storage. Obsah zprávy fronty se poskytuje kódu metody v parametru message
. Tělo metody je místo, kde zpracováváte data triggeru. V tomto příkladu kód pouze zaprokoluje zprávu.
V Průzkumník řešení klikněte pravým tlačítkem myši na projekt, vyberte Přidat>novou položku a pak vyberte Třída.
Pojmenujte nový soubor třídy C# Functions.cs a vyberte Přidat.
V Functions.cs nahraďte vygenerovanou šablonu následujícím kódem:
using Microsoft.Azure.WebJobs; using Microsoft.Extensions.Logging; namespace WebJobsSDKSample { public class Functions { public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger logger) { logger.LogInformation(message); } } }
Třídu Functions byste měli označit jako
public static
pro přístup k modulu runtime a spuštění metody. V ukázce výše uvedeného kódu se při přidání zprávy do fronty s názvemqueue
spustí funkce amessage
řetězec se zapíše do protokolů. Monitorovaná fronta je ve výchozím účtu Azure Storage, který vytvoříte dále.
Parametr message
nemusí být řetězec. Můžete také vytvořit vazbu na objekt JSON, pole bajtů nebo objekt CloudQueueMessage . Viz Využití triggeru fronty. Každý typ vazby (například fronty, objekty blob nebo tabulky) má jinou sadu typů parametrů, se kterými se můžete svázat.
Vytvoření účtu úložiště Azure
Emulátor služby Azure Storage, který běží místně, nemá všechny funkce, které sada WebJobs SDK potřebuje. V Azure vytvoříte účet úložiště a nakonfigurujete projekt tak, aby ho používal.
Informace o vytvoření účtu úložiště pro obecné účely verze 2 najdete v tématu Vytvoření účtu služby Azure Storage.
Vyhledání a zkopírování připojovací řetězec
Ke konfiguraci úložiště se vyžaduje připojovací řetězec. Tento připojovací řetězec ponechte pro další kroky.
Na webu Azure Portal přejděte do svého účtu úložiště a vyberte Nastavení.
V Nastavení vyberte Přístupové klíče.
U připojovacího řetězce pod klíčem1 vyberte ikonu Kopírovat do schránky .
Konfigurace úložiště pro místní spuštění
Sada WebJobs SDK hledá připojovací řetězec úložiště v Nastavení aplikace v Azure. Když spustíte místně, vyhledá tuto hodnotu v místním konfiguračním souboru nebo v proměnných prostředí.
Klikněte pravým tlačítkem myši na projekt, vyberte Přidat>novou položku, vyberte konfigurační soubor JSON JavaScriptu, pojmenujte nový soubor appsettings.json soubor a vyberte Přidat.
Do nového souboru přidejte
AzureWebJobsStorage
pole, jako v následujícím příkladu:{ "AzureWebJobsStorage": "{storage connection string}" }
Položku {storage připojovací řetězec} nahraďte připojovací řetězec, kterou jste zkopírovali dříve.
Vyberte soubor appsettings.json v Průzkumník řešení a v okně Vlastnosti nastavte akci Kopírovat do výstupního adresáře na hodnotu Kopírovat, pokud je novější.
Protože tento soubor obsahuje tajný kód připojovací řetězec, neměli byste ho ukládat do vzdáleného úložiště kódu. Po publikování projektu do Azure můžete do aplikace přidat stejné nastavení aplikace připojovací řetězec ve službě Aplikace Azure Service.
Místní testování
Sestavte a spusťte projekt místně a vytvořte frontu zpráv pro aktivaci funkce.
Na webu Azure Portal přejděte do svého účtu úložiště a vyberte kartu Fronty (1). Vyberte + Fronta (2) a zadejte frontu jako název fronty (3). Pak vyberte OK (4).
Klikněte na novou frontu a vyberte Přidat zprávu.
V dialogovém okně Přidat zprávu zadejte text Zprávy Hello World! a pak vyberte OK. Ve frontě je teď zpráva.
Stisknutím kombinace kláves Ctrl+F5 spusťte projekt.
Konzola ukazuje, že modul runtime našel vaši funkci. Vzhledem k tomu, že jste použili
QueueTrigger
atribut veProcessQueueMessage
funkci, modul runtime WebJobs naslouchá zprávám ve frontě s názvemqueue
. Když najde novou zprávu v této frontě, modul runtime volá funkci a předává hodnotu řetězce zprávy.Vraťte se do okna Fronta a aktualizujte ho. Zpráva je pryč, protože ji zpracovává vaše funkce spuštěná místně.
Zavřete okno konzoly.
Teď je čas publikovat projekt sady WebJobs SDK do Azure.
Nasazení do Azure
Během nasazování vytvoříte instanci služby App Service, ve které budete spouštět funkce. Když publikujete konzolovou aplikaci .NET do služby App Service v Azure, automaticky se spustí jako webová úloha. Další informace o publikování najdete v tématu Vývoj a nasazení webových úloh pomocí sady Visual Studio.
Vytvoření zdrojů Azure
V Průzkumníku řešení klikněte pravým tlačítkem na požadovaný projekt a vyberte Publikovat.
V dialogovém okně Publikovat vyberte Azure for Target a pak vyberte Další.
Vyberte Azure WebJobs pro konkrétní cíl a pak vyberte Další.
Nad instancemi služby App Service vyberte tlačítko plus (+) a vytvořte novou webovou úlohu Azure.
V dialogovém okně App Service (Windows) použijte nastavení hostování v následující tabulce.
Nastavení Navrhovaná hodnota Description Jméno Globálně jedinečný název Název jednoznačně identifikující novou aplikaci funkcí. Předplatné Zvolte si předplatné. Předplatné Azure, které se má použít. Skupina prostředků myResourceGroup Název skupiny prostředků, ve které chcete vytvořit aplikaci funkcí Pokud chcete vytvořit novou skupinu prostředků, zvolte Nová. Plán hostování Plán služby App Service Plán služby App Service určuje umístění, velikost a funkce farmy webových serverů, která je hostitelem vaší aplikace. Při hostování více aplikací můžete ušetřit peníze, pokud nakonfigurujete webové aplikace tak, aby sdílely jeden plán služby App Service. Plány služby App Service definují oblast, velikost instance, počet škálování a skladovou položku (Free, Shared, Basic, Standard nebo Premium). Zvolte Nový a vytvořte nový plán služby App Service. Úrovně Free a Basic nepodporují možnost AlwaysOn, aby váš web běžel nepřetržitě. Výběrem možnosti Vytvořit vytvoříte webovou úlohu a související prostředky v Azure s těmito nastaveními a nasadíte kód projektu.
Výběrem možnosti Dokončit se vrátíte na stránku Publikovat .
Povolení skupin dostupnosti AlwaysOn
U průběžné webové úlohy byste měli povolit nastavení AlwaysOn na webu, aby vaše webové úlohy běžely správně. Pokud funkci AlwaysOn nepovolíte, modul runtime po několika minutách nečinnosti nečiní.
Na stránce Publikovat vyberte tři tečky výše Hostování, aby se zobrazily akce v části Profil hostování a zvolte Otevřít na webu Azure Portal.
V části Nastavení zvolte Obecné nastavení konfigurace>, nastavte možnost AlwaysOn na Zapnuto a potom vyberte Uložit a Pokračovat a restartujte lokalitu.
Publikování projektu
Když je webová aplikace vytvořená v Azure, je čas publikovat projekt Webové úlohy.
Na stránce Publikovat v části Hostování vyberte tlačítko Upravit a změňte typ webové úlohy na
Continuous
a vyberte Uložit. Tím se zajistí, že webová úloha běží při přidání zpráv do fronty. Aktivované webové úlohy se obvykle používají jenom pro ruční webhooky.Vyberte tlačítko Publikovat v pravém horním rohu stránky Publikovat. Po dokončení operace běží vaše webová úloha v Azure.
Vytvoření nastavení aplikace pro připojení k úložišti
V Azure musíte vytvořit stejné nastavení připojovací řetězec úložiště, které jste použili místně v konfiguračním souboru appsettings.json. To vám umožní bezpečněji ukládat připojovací řetězec a
Na stránce publikovat profil vyberte tři tečky nad hostingem, aby se zobrazily akce v části Profil hostování a zvolte Spravovat nastavení služby Aplikace Azure.
V nastavení aplikace zvolte + Přidat nastavení.
Do pole Nový název nastavení aplikace zadejte
AzureWebJobsStorage
a vyberte OK.Ve vzdáleném umístění vložte připojovací řetězec z místního nastavení a vyberte OK.
V aplikaci v Azure je teď nastavená připojovací řetězec.
Aktivace funkce v Azure
Ujistěte se, že neběžíte místně. Zavřete okno konzoly, pokud je stále otevřené. V opačném případě může být místní instance první, která zpracuje všechny zprávy fronty, které vytvoříte.
Na stránce Fronta v sadě Visual Studio přidejte do fronty zprávu jako předtím.
Aktualizujte stránku Fronta a nová zpráva zmizí, protože ji zpracovala funkce spuštěná v Azure.
Povolení protokolování Application Insights
Když webová úloha běží v Azure, nemůžete monitorovat spouštění funkcí zobrazením výstupu konzoly. Abyste mohli monitorovat webovou úlohu, měli byste při publikování projektu vytvořit přidruženou instanci Application Insights .
Vytvoření instance Application Insights
Na stránce publikovat profil vyberte tři tečky nad hostingem, aby se zobrazily akce v části Profil hostování a zvolte Otevřít na webu Azure Portal.
Ve webové aplikaci v části Nastavení zvolte Application Insights a vyberte Zapnout Application Insights.
Ověřte vygenerovaný název prostředku pro instanci a umístění a vyberte Použít.
V části Nastavení zvolte Konfigurace a ověřte, že se vytvořil nový
APPINSIGHTS_INSTRUMENTATIONKEY
. Tento klíč slouží k připojení instance webové úlohy k Application Insights.
Pokud chcete využít výhod protokolování Application Insights , musíte aktualizovat také kód protokolování.
Instalace rozšíření Application Insights
Získejte nejnovější stabilní verzi balíčku NuGet Microsoft.Azure.WebJobs.Logging.ApplicationInsights verze 3.x.
V následujícím příkazu nahraďte
<3_X_VERSION>
aktuálním číslem verze, které jste našli v kroku 1. Každý typ balíčku NuGet má jedinečné číslo verze.Install-Package Microsoft.Azure.WebJobs.Logging.ApplicationInsights -Version <3_X_VERSION>
V konzole Správce balíčků spusťte příkaz s aktuálním číslem verze v vstupním
PM>
bodě.
Inicializace zprostředkovatele protokolování Application Insights
Otevřete Program.cs a do volání AddConsole
přidejte následující inicializátorConfigureLogging
:
// If the key exists in settings, use it to enable Application Insights.
string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(instrumentationKey))
{
b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
}
Kód Main
metody by teď měl vypadat jako v následujícím příkladu:
static async Task Main()
{
var builder = new HostBuilder();
builder.UseEnvironment(EnvironmentName.Development);
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
});
builder.ConfigureLogging((context, b) =>
{
b.AddConsole();
// If the key exists in settings, use it to enable Application Insights.
string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(instrumentationKey))
{
b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
}
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
Tím se inicializuje zprostředkovatel protokolování Application Insights s výchozím filtrováním. Při místním spuštění se všechny protokoly informací a vyšší úrovně zapisují do konzoly i application Insights.
Znovu publikujte projekt a znovu aktivujte funkci.
V Průzkumníku řešení klikněte pravým tlačítkem na požadovaný projekt a vyberte Publikovat.
Stejně jako předtím pomocí webu Azure Portal vytvořte zprávu fronty, jako jste to udělali dříve, s výjimkou zadání Hello App Insights! jako text zprávy.
Na stránce publikovat profil vyberte tři tečky nad hostingem, aby se zobrazily akce v části Profil hostování a zvolte Otevřít na webu Azure Portal.
Ve webové aplikaci v části Nastavení zvolte Application Insights a vyberte Zobrazit data Application Insights.
Vyberte Hledat a pak vyberte Zobrazit všechna data za posledních 24 hodin.
Pokud zprávu Hello App Insights! nevidíte, vyberte možnost Aktualizovat pravidelně po dobu několika minut. Protokoly se nezobrazují okamžitě, protože chvíli trvá, než klient Application Insights vyprázdní protokoly, které zpracovává.
Přidání vstupních a výstupních vazeb
Vazby zjednodušují kód, který čte a zapisuje data. Vstupní vazby zjednodušují kód, který čte data. Výstupní vazby zjednodušují kód, který zapisuje data.
Přidání vazeb
Vstupní vazby zjednodušují kód, který čte data. V tomto příkladu je zpráva fronty názvem objektu blob, který použijete k vyhledání a čtení objektu blob ve službě Azure Storage. Pak použijete výstupní vazby k zápisu kopie souboru do stejného kontejneru.
Do Functions.cs přidejte
using
:using System.IO;
Nahraďte metodu
ProcessQueueMessage
následujícím kódem:public static void ProcessQueueMessage( [QueueTrigger("queue")] string message, [Blob("container/{queueTrigger}", FileAccess.Read)] Stream myBlob, [Blob("container/copy-{queueTrigger}", FileAccess.Write)] Stream outputBlob, ILogger logger) { logger.LogInformation($"Blob name:{message} \n Size: {myBlob.Length} bytes"); myBlob.CopyTo(outputBlob); }
V tomto kódu
queueTrigger
je výraz vazby, což znamená, že se překládá na jinou hodnotu za běhu. Za běhu má obsah zprávy fronty.Tento kód používá výstupní vazby k vytvoření kopie souboru identifikovaného zprávou fronty. Kopie souboru má předponu copy-.
V Program.cs přidejte v
ConfigureWebJobs
metodě rozšíření metoduHostBuilder
AddAzureStorageBlobs
do instance (předBuild
příkaz) pro inicializaci rozšíření Storage. V tomto okamžikuConfigureWebJobs
metoda vypadá takto:builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); b.AddAzureStorageQueues(); b.AddAzureStorageBlobs(); });
Vytvořte v účtu úložiště kontejner objektů blob.
a. Na webu Azure Portal přejděte na kartu Kontejnery pod úložištěm dat a vyberte + Kontejner.
b. V dialogovém okně Nový kontejner zadejte kontejner jako název kontejneru a pak vyberte Vytvořit.
Nahrajte soubor Program.cs do kontejneru objektů blob. (Tento soubor se tady používá jako příklad. Můžete nahrát libovolný textový soubor a vytvořit zprávu fronty s názvem souboru.)
a. Vyberte nový kontejner, který jste vytvořili.
b. vyberte tlačítko Nahrát.
c. Najděte a vyberte Program.cs a pak vyberte OK.
Opětovné publikování projektu
V Průzkumníku řešení klikněte pravým tlačítkem na požadovaný projekt a vyberte Publikovat.
V dialogovém okně Publikovat se ujistěte, že je vybraný aktuální profil, a pak vyberte Publikovat. Výsledky publikování jsou podrobně popsány v okně Výstup .
Vytvořte ve frontě, kterou jste vytvořili dříve, zprávu fronty s Program.cs jako text zprávy.
V kontejneru objektů blob se zobrazí kopie souboru copy-Program.cs.
Další kroky
Tento kurz vám ukázal, jak vytvořit, spustit a nasadit projekt Sady WebJobs SDK 3.x.