Vývoj a nasazení webových úloh pomocí sady Visual Studio

Tento článek vysvětluje, jak pomocí sady Visual Studio nasadit projekt konzolové aplikace do webové aplikace v Azure App Service jako webovou úlohu Azure. Informace o nasazení webových úloh pomocí Azure Portal najdete v tématu Spouštění úloh na pozadí pomocí webových úloh v Azure App Service.

Můžete se rozhodnout vyvinout webovou úlohu, která běží buď jako aplikace .NET Core , nebo jako aplikace .NET Framework. Verze 3.x sady Azure WebJobs SDK umožňuje vyvíjet webové úlohy, které běží jako aplikace .NET Core nebo .NET Framework, zatímco verze 2.x podporuje pouze rozhraní .NET Framework. Způsob nasazení projektu WebJobs se u projektů .NET Core liší od projektů .NET Framework.

Do jedné webové aplikace můžete publikovat více webových úloh za předpokladu, že každá webová úloha ve webové aplikaci má jedinečný název.

WebJobs jako konzolové aplikace .NET Core

Ve verzi 3.x sady Azure WebJobs SDK můžete vytvářet a publikovat webové úlohy jako konzolové aplikace .NET Core. Podrobné pokyny k vytvoření a publikování konzolové aplikace .NET Core do Azure jako webové úlohy najdete v tématu Začínáme se sadou Azure WebJobs SDK pro zpracování na pozadí řízené událostmi.

Poznámka

Webové úlohy .NET Core Web Apps nebo .NET Core nejde propojit s webovými projekty. Pokud potřebujete nasadit webovou úlohu s webovou aplikací, vytvořte webovou úlohu jako konzolovou aplikaci .NET Framework.

Nasazení do Azure App Service

Publikování webové úlohy .NET Core do Azure App Service ze sady Visual Studio používá stejné nástroje jako publikování ASP.NET Core aplikace.

  1. V Průzkumníku řešení klikněte pravým tlačítkem na požadovaný projekt a vyberte Publikovat.

  2. V dialogovém okně Publish (Publikovat) vyberte Azure for Target (Cíl) a pak vyberte Next (Další).

  3. Jako Konkrétní cíl vyberte Azure WebJobs a pak vyberte Další.

  4. Nad App Service instancemi vyberte tlačítko plus (+) a vytvořte novou webovou úlohu Azure.

  5. V dialogovém okně App Service (Windows) použijte nastavení hostování v následující tabulce.

    Nastavení Navrhovaná hodnota Popis
    Název Globálně jedinečný název Název jednoznačně identifikující novou aplikaci funkcí.
    Předplatné Zvolte vaše 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. App Service plány 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 App Service. Úrovně Free a Basic nepodporují možnost AlwaysOn, aby váš web fungoval nepřetržitě.

    Dialogové okno Vytvořit App Service

  6. Výběrem možnosti Vytvořit vytvořte webovou úlohu a související prostředky v Azure s těmito nastaveními a nasaďte kód projektu.

  7. Výběrem možnosti Dokončit se vraťte na stránku Publikovat.

Webové úlohy jako konzolové aplikace rozhraní .NET Framework

Pokud používáte sadu Visual Studio k nasazení projektu konzolové aplikace .NET Framework s podporou webových úloh, zkopíruje soubory modulu runtime do příslušné složky ve webové aplikaci (App_Data/úlohy/průběžné pro průběžné webové úlohy a App_Data/úlohy/aktivované pro naplánované webové úlohy nebo webové úlohy na vyžádání).

Visual Studio přidá do projektu s podporou webových úloh následující položky:

Diagram znázorňující, co je přidáno do konzolové aplikace pro povolení nasazení jako webové úlohy

Tyto položky můžete přidat do existujícího projektu konzolové aplikace nebo pomocí šablony vytvořit nový projekt konzolové aplikace s podporou webových úloh.

Nasaďte projekt jako vlastní webovou úlohu nebo ho propojte s webovým projektem, aby se automaticky nasazoval při každém nasazení webového projektu. Aby bylo možné propojit projekty, Visual Studio zahrne název projektu s povoleným webjobs v souboru webjobs-list.json ve webovém projektu.

Diagram znázorňující propojení projektu webové úlohy s webovým projektem

Požadavky

Nainstalujte Sadu Visual Studio 2022 pomocí úlohy Vývoj pro Azure.

Povolení nasazení webových úloh pro existující projekt konzolové aplikace

Máte dvě možnosti:

  • Povolte automatické nasazení s webovým projektem.

    Nakonfigurujte existující projekt konzolové aplikace tak, aby se při nasazení webového projektu automaticky nasadil jako webová úloha. Tuto možnost použijte, pokud chcete webovou úlohu spustit ve stejné webové aplikaci, ve které spouštíte související webovou aplikaci.

  • Povolte nasazení bez webového projektu.

    Nakonfigurujte existující projekt konzolové aplikace tak, aby se sám nasazoval jako webová úloha bez odkazu na webový projekt. Tuto možnost použijte, pokud chcete webovou úlohu spustit samostatně ve webové aplikaci, ve které není spuštěná žádná webová aplikace. Můžete to chtít udělat, pokud chcete škálovat prostředky webové úlohy nezávisle na prostředcích vaší webové aplikace.

  1. Klikněte pravým tlačítkem na webový projekt v Průzkumník řešení a pak vyberte Přidat>existující projekt jako webovou úlohu Azure.

    Existující projekt jako webová úloha Azure

    Zobrazí se dialogové okno Přidat webovou úlohu Azure .

  2. V rozevíracím seznamu Název projektu vyberte projekt konzolové aplikace, který chcete přidat jako webovou úlohu.

    Výběr projektu v dialogovém okně Přidat webovou úlohu Azure

  3. Vyplňte dialogové okno Přidat webovou úlohu Azure a pak vyberte OK.

  1. Klikněte pravým tlačítkem na projekt konzolové aplikace v Průzkumník řešení a pak vyberte Publikovat jako webovou úlohu Azure.

    Publikovat jako webovou úlohu Azure

    Zobrazí se dialogové okno Přidat webovou úlohu Azure s vybraným projektem v poli Název projektu .

  2. Vyplňte dialogové okno Přidat webovou úlohu Azure a pak vyberte OK.

    Zobrazí se průvodce Publikovat web . Pokud nechcete publikovat okamžitě, zavřete průvodce. Nastavení, která jste zadali, se uloží, když chcete projekt nasadit.

Vytvoření nového projektu s podporou webových úloh

Pokud chcete vytvořit nový projekt s podporou webových úloh, použijte šablonu projektu konzolové aplikace a povolte nasazení webových úloh, jak je vysvětleno v předchozí části. Jako alternativu můžete použít šablonu webjobs new-project:

  • Použití šablony projektu WebJobs pro nezávislou webovou úlohu

    Vytvořte projekt a nakonfigurujte ho tak, aby se sám nasazoval jako webová úloha bez odkazu na webový projekt. Tuto možnost použijte, pokud chcete webovou úlohu spustit samostatně ve webové aplikaci, ve které není spuštěná žádná webová aplikace. Můžete to chtít udělat, pokud chcete škálovat prostředky webové úlohy nezávisle na prostředcích vaší webové aplikace.

  • Použití šablony webjobs new-project pro webovou úlohu propojenou s webovým projektem

    Při nasazení webového projektu ve stejném řešení vytvořte projekt, který je nakonfigurovaný tak, aby se automaticky nasazoval jako webová úloha. Tuto možnost použijte, pokud chcete webovou úlohu spustit ve stejné webové aplikaci, ve které spouštíte související webovou aplikaci.

Poznámka

Šablona new-projectu WebJobs automaticky nainstaluje balíčky NuGet a obsahuje kód v souboru Program.cs pro sadu WebJobs SDK. Pokud nechcete používat sadu WebJobs SDK, odeberte nebo změňte host.RunAndBlock příkaz v souboru Program.cs.

  1. Vyberte Soubor>nový>projekt. V dialogovém okně Vytvořit nový projekt vyhledejte a vyberte Azure WebJob (.NET Framework) pro C#.

  2. Postupujte podle předchozích pokynů a vytvořte z projektu konzolové aplikace nezávislý projekt Webových úloh.

  1. Klikněte pravým tlačítkem na webový projekt v Průzkumník řešení a pak vyberte Přidat>nový projekt webové úlohy Azure.

    Nová položka nabídky Projekt webové úlohy Azure

    Zobrazí se dialogové okno Přidat webovou úlohu Azure .

  2. Vyplňte dialogové okno Přidat webovou úlohu Azure a pak vyberte OK.

soubor webjob-publish-settings.json

Když nakonfigurujete konzolovou aplikaci pro nasazení webových úloh, visual Studio nainstaluje balíček NuGet Microsoft.Web.WebJobs.Publish a uloží informace o plánování do souboru webjob-publish-settings.json ve složce Vlastnosti projektu WebJobs. Tady je příklad tohoto souboru:

{
  "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
  "webJobName": "WebJob1",
  "startTime": "null",
  "endTime": "null",
  "jobRecurrenceFrequency": "null",
  "interval": null,
  "runMode": "Continuous"
}

Tento soubor můžete upravit přímo a Sada Visual Studio poskytuje IntelliSense. Schéma souboru je uloženo na adrese https://schemastore.org a můžete ho tam zobrazit.

soubor webjobs-list.json

Při propojení projektu s povoleným webjobs webovým projektem uloží Visual Studio název projektu WebJobs do souboru webjobs-list.json ve složce Vlastnosti webového projektu. Seznam může obsahovat více projektů WebJobs, jak je znázorněno v následujícím příkladu:

{
  "$schema": "http://schemastore.org/schemas/json/webjobs-list.json",
  "WebJobs": [
    {
      "filePath": "../ConsoleApplication1/ConsoleApplication1.csproj"
    },
    {
      "filePath": "../WebJob1/WebJob1.csproj"
    }
  ]
}

Tento soubor můžete upravit přímo v sadě Visual Studio pomocí IntelliSense. Schéma souboru je uloženo na adrese https://schemastore.org.

Nasazení projektu WebJobs

Projekt WebJobs, který jste propojili s webovým projektem, se automaticky nasadí s webovým projektem. Informace o nasazení webového projektu najdete v tématu Návody>Nasazení aplikace v levém navigačním panelu.

Pokud chcete projekt WebJobs nasadit sám, klikněte pravým tlačítkem na projekt v Průzkumník řešení a vyberte Publikovat jako webovou úlohu Azure.

Publikovat jako webovou úlohu Azure

Pro nezávislou webovou úlohu se zobrazí stejný průvodce Publikování webu , který se používá pro webové projekty, ale s menším počtem nastavení, které je možné změnit.

Dialogové okno Přidat webovou úlohu Azure

Dialogové okno Přidat webovou úlohu Azure umožňuje zadat název webové úlohy a nastavení režimu spuštění pro webovou úlohu.

Dialogové okno Přidat webovou úlohu Azure

Některá pole v tomto dialogovém okně odpovídají polím v dialogovém okně Přidat webovou úlohu Azure Portal. Další informace najdete v tématu Spouštění úloh na pozadí pomocí webových úloh v Azure App Service.

Informace o nasazení webové úlohy:

  • Informace o nasazení na příkazovém řádku najdete v tématu Povolení příkazového řádku nebo Průběžné doručování webových úloh Azure.

  • Pokud nasadíte webovou úlohu a pak se rozhodnete změnit typ webové úlohy a znovu ji nasadit, odstraňte soubor webjobs-publish-settings.json . To způsobí, že Visual Studio znovu zobrazí možnosti publikování, takže můžete změnit typ webové úlohy.

  • Pokud nasadíte webovou úlohu a později změníte režim spuštění z průběžného na non-continuous nebo naopak, visual Studio při opětovném nasazení vytvoří novou webovou úlohu v Azure. Pokud změníte další nastavení plánování, ale ponecháte stejný režim spuštění nebo přepnete mezi naplánovaným a na vyžádání, visual Studio aktualizuje stávající úlohu místo vytvoření nové.

Typy webových úloh

Typ webové úlohy může být buď aktivovaný , nebo nepřetržitý:

  • Aktivované (výchozí): Aktivovaná webová úloha se spustí na základě události vazby, podle plánu nebo při ruční aktivaci (na vyžádání). Běží na jedné instanci, na které běží webová aplikace.

  • Nepřetržitá: Souvislá webová úloha se spustí okamžitě při vytvoření webové úlohy. Ve výchozím nastavení běží ve všech instancích se škálováním webové aplikace, ale dá se nakonfigurovat tak, aby běžela jako jedna instance prostřednictvím souboru settings.job.

Poznámka

Po 20 minutách nečinnosti může vypršel časový limit webové aplikace a časovač můžou resetovat jenom požadavky na skutečnou webovou aplikaci. Zobrazením konfigurace aplikace v Azure Portal nebo vytvářením požadavků na web pokročilých nástrojů (https://<app_name>.scm.azurewebsites.net) časovač neobnovíte. Pokud nastavíte, aby webová aplikace, která hostuje vaši úlohu, běžela nepřetržitě, běžela podle plánu nebo používala triggery řízené událostmi, povolte nastavení Alwayson na stránce Konfigurace Azure vaší webové aplikace. Nastavení AlwaysOn pomáhá zajistit, aby tyto typy webových úloh běžely spolehlivě. Tato funkce je dostupná jenom v cenových úrovních Basic, Standard a Premium.

Naplánování aktivované webové úlohy

Když publikujete konzolovou aplikaci do Azure, sada Visual Studio ve výchozím nastavení nastaví typ webové úlohy na Aktivovaná a přidá do projektu nový soubor settings.job . Pro typy aktivovaných webových úloh můžete tento soubor použít k nastavení plánu provádění pro webovou úlohu.

Pomocí souboru settings.job nastavte plán provádění webové úlohy. Následující příklad se spouští každou hodinu od 9:00 do 17:00:

{
    "schedule": "0 0 9-17 * * *"
}

Tento soubor se nachází v kořenovém adresáři složky WebJobs se skriptem vaší webové úlohy, například wwwroot\app_data\jobs\triggered\{job name} nebo wwwroot\app_data\jobs\continuous\{job name}. Když nasadíte webovou úlohu ze sady Visual Studio, označte vlastnosti souboru settings.job v sadě Visual Studio jako Kopírovat, pokud je novější.

Pokud vytvoříte webovou úlohu z Azure Portal, vytvoří se pro vás soubor settings.job.

Výrazy CRON

WebJobs používá pro plánování stejné výrazy CRON jako trigger časovače v Azure Functions. Další informace o podpoře CRON najdete v tématu Trigger časovače pro Azure Functions.

Poznámka

Výchozím časovým pásmem, které se používá ke spouštění výrazů CRON, je utc (Coordinated Universal Time). Pokud chcete, aby se výraz CRON spustil na základě jiného časového pásma, vytvořte pro aplikaci funkcí nastavení aplikace s názvem WEBSITE_TIME_ZONE. Další informace najdete v tématu Časová pásma NCRONTAB.

referenční informace k settings.job

Webové úlohy podporují následující nastavení:

Nastavení Typ Popis
is_in_place Vše Umožňuje, aby webová úloha běžela na místě, aniž by byla nejprve zkopírována do dočasné složky. Další informace najdete v tématu Pracovní adresář webové úlohy.
is_singleton Průběžný Při horizontálním navýšení kapacity spusťte webovou úlohu pouze v jedné instanci. Další informace najdete v tématu Nastavení průběžné úlohy jako jednoúčelové úlohy.
schedule Spuštěna Spusťte webovou úlohu podle plánu založeného na CRON. Další informace najdete v tématu Výrazy NCRONTAB.
stopping_wait_time Vše Umožňuje řídit chování vypnutí. Další informace najdete v tématu Řádné vypnutí.

Průběžné spouštění

Pokud v Azure povolíte funkci AlwaysOn , můžete pomocí sady Visual Studio změnit webovou úlohu tak, aby běžela nepřetržitě:

  1. Pokud jste to ještě neudělali, publikujte projekt do Azure.

  2. V Průzkumníku řešení klikněte pravým tlačítkem na požadovaný projekt a vyberte Publikovat.

  3. V části Nastavení zvolte Zobrazit všechna nastavení.

  4. V dialogovém okně Nastavení profilu zvolte jako Typ webové úlohymožnost Nepřetržitý a pak zvolte Uložit.

    Dialogové okno Nastavení publikování pro webovou úlohu

  5. Výběrem možnosti Publikovat na kartě Publikovat znovu publikujte webovou úlohu s aktualizovaným nastavením.

Další kroky