Webjobs ontwikkelen en implementeren met Visual Studio

In dit artikel wordt uitgelegd hoe u Visual Studio gebruikt om een console-app-project te implementeren in een web-app in Azure App Service als een Azure-webtaak. Zie Achtergrondtaken uitvoeren met webtaken in Azure App Service voor informatie over het implementeren van webtaken met behulp van de Azure Portal.

U kunt ervoor kiezen om een webtaak te ontwikkelen die wordt uitgevoerd als een .NET Core-app of een .NET Framework-app. Met versie 3.x van de Azure WebJobs SDK kunt u webtaken ontwikkelen die worden uitgevoerd als .NET Core-apps of .NET Framework-apps, terwijl versie 2.x alleen de .NET Framework ondersteunt. De manier waarop u een WebJobs-project implementeert, is anders voor .NET Core-projecten dan voor .NET Framework-projecten.

U kunt meerdere webtaken publiceren naar één web-app, mits elke webtaak in een web-app een unieke naam heeft.

WebJobs als .NET Core-console-apps

Met versie 3.x van de Azure WebJobs SDK kunt u WebJobs maken en publiceren als .NET Core-console-apps. Zie Aan de slag met de Azure WebJobs SDK voor gebeurtenisgestuurde achtergrondverwerking voor stapsgewijze instructies voor het maken en publiceren van een .NET Core-console-app naar Azure als een webtaak.

Notitie

.NET Core Web Apps en/of .NET Core WebJobs kunnen niet worden gekoppeld aan webprojecten. Als u uw webtaak wilt implementeren met een web-app, maakt u uw webtaken als een .NET Framework console-app.

Implementeren naar Azure App Service

Het publiceren van een .NET Core-webtaak naar Azure App Service vanuit Visual Studio gebruikt dezelfde hulpprogramma's als het publiceren van een ASP.NET Core-app.

  1. Klik in Solution Explorer met de rechtermuisknop op het project en selecteer Publiceren.

  2. Selecteer in het dialoogvenster Publiceren de optie Azure for Target en selecteer vervolgens Volgende.

  3. Selecteer Azure WebJobs voor Specifiek doel en selecteer vervolgens Volgende.

  4. Selecteer boven App Service exemplaren de plusknop (+) om een nieuwe Azure-webtaak te maken.

  5. Gebruik in het dialoogvenster App Service (Windows) de hostinginstellingen in de volgende tabel.

    Instelling Voorgestelde waarde Beschrijving
    Naam Wereldwijd unieke naam Naam waarmee uw nieuwe functie-app uniek wordt aangeduid.
    Abonnement Kies uw abonnement Het te gebruiken Azure-abonnement.
    Resourcegroep myResourceGroup Naam van de resourcegroep waarin uw functie-app moet worden gemaakt. Kies Nieuw om een nieuwe resourcegroep te maken.
    Hostingabonnement App Service-plan Een App Service-plan geeft de locatie, de grootte en de functies van de webserverfarm aan die als host fungeert voor uw app. U kunt geld besparen bij het hosten van meerdere apps door de web-apps te configureren voor het delen van één App Service-plan. App Service plannen definiëren de regio, de grootte van het exemplaar, het schaalaantal en de SKU (Gratis, Gedeeld, Basic, Standard of Premium). Kies Nieuw om een nieuw App Service-plan te maken. De gratis en Basic-lagen bieden geen ondersteuning voor de optie AlwaysOn om uw site continu te laten werken.

    Het dialoogvenster App Service maken

  6. Selecteer Maken om een webtaak en gerelateerde resources in Azure te maken met deze instellingen en uw projectcode te implementeren.

  7. Selecteer Voltooien om terug te keren naar de pagina Publiceren .

WebJobs als .NET Framework console-apps

Als u Visual Studio gebruikt om een .NET Framework-console-app-project met webtaken te implementeren, worden runtimebestanden gekopieerd naar de juiste map in de web-app (App_Data/jobs/continuous voor continue webtaken en App_Data/jobs/geactiveerd voor geplande of on-demand webtaken).

Visual Studio voegt de volgende items toe aan een project waarvoor WebJobs is ingeschakeld:

Diagram met wat er is toegevoegd aan een console-app om implementatie als een webtaak in te schakelen

U kunt deze items toevoegen aan een bestaand console-app-project of een sjabloon gebruiken om een nieuw console-app-project met WebJobs te maken.

Implementeer een project zelf als een webtaak of koppel het aan een webproject, zodat het automatisch wordt geïmplementeerd wanneer u het webproject implementeert. Als u projecten wilt koppelen, neemt Visual Studio de naam op van het webtaakproject in een webjobs-list.json-bestand in het webproject.

Diagram met webtaakprojectkoppelingen naar webproject

Vereisten

Installeer Visual Studio 2022 met de Azure-ontwikkelworkload.

WebJobs-implementatie inschakelen voor een bestaand console-app-project

U hebt hiervoor twee opties:

  • Automatische implementatie met een webproject inschakelen.

    Configureer een bestaand console-app-project zodat het automatisch als een webtaak wordt geïmplementeerd wanneer u een webproject implementeert. Gebruik deze optie als u uw webtaak wilt uitvoeren in dezelfde web-app waarin u de gerelateerde webtoepassing uitvoert.

  • Implementatie zonder webproject inschakelen.

    Configureer een bestaand console-app-project om zelf als een webtaak te implementeren, zonder een koppeling naar een webproject. Gebruik deze optie als u een webtaak zelf in een web-app wilt uitvoeren, zonder dat er in de web-app een webtoepassing wordt uitgevoerd. U kunt dit doen om uw webtaakresources onafhankelijk van uw webtoepassingsresources te schalen.

  1. Klik met de rechtermuisknop op het webproject in Solution Explorer en selecteer vervolgens Bestaand project toevoegen>als Azure-webtaak.

    Bestaand project als Azure-webtaak

    Het dialoogvenster Azure-webtaak toevoegen wordt weergegeven.

  2. Selecteer in de vervolgkeuzelijst Projectnaam het console-app-project dat u wilt toevoegen als een webtaak.

    Project selecteren in het dialoogvenster Azure WebJob toevoegen

  3. Voltooi het dialoogvenster Azure-webtaak toevoegen en selecteer VERVOLGENS OK.

  1. Klik met de rechtermuisknop op het console-app-project in Solution Explorer en selecteer vervolgens Publiceren als Azure-webtaak.

    Publiceren als Azure-webtaak

    Het dialoogvenster Azure-webtaak toevoegen wordt weergegeven, waarbij het project is geselecteerd in het vak Projectnaam .

  2. Voltooi het dialoogvenster Azure-webtaak toevoegen en selecteer VERVOLGENS OK.

    De wizard Web publiceren wordt weergegeven. Als u niet onmiddellijk wilt publiceren, sluit u de wizard. De instellingen die u hebt ingevoerd, worden opgeslagen voor wanneer u het project wilt implementeren.

Een nieuw project met WebJobs maken

Als u een nieuw project met WebJobs wilt maken, gebruikt u de projectsjabloon van de console-app en schakelt u de implementatie van WebJobs in, zoals uitgelegd in de vorige sectie. Als alternatief kunt u de sjabloon WebJobs new-project gebruiken:

Notitie

Met de nieuwe projectsjabloon WebJobs worden automatisch NuGet-pakketten geïnstalleerd en code opgenomen in Program.cs voor de WebJobs SDK. Als u de WebJobs SDK niet wilt gebruiken, verwijdert u de instructie in Program.cs of wijzigt u dezehost.RunAndBlock.

  1. Selecteer Bestand>Nieuw>Project. In het dialoogvenster Een nieuw project maken zoekt en selecteert u Azure WebJob (.NET Framework) voor C#.

  2. Volg de vorige aanwijzingen om van het console-app-project een onafhankelijk WebJobs-project te maken.

  1. Klik met de rechtermuisknop op het webproject in Solution Explorer en selecteer vervolgensNieuw Azure-webtaakprojecttoevoegen>.

    Menuopdracht Nieuw Azure WebJob-project

    Het dialoogvenster Azure-webtaak toevoegen wordt weergegeven.

  2. Voltooi het dialoogvenster Azure-webtaak toevoegen en selecteer VERVOLGENS OK.

bestand webjob-publish-settings.json

Wanneer u een console-app configureert voor de implementatie van WebJobs, installeert Visual Studio het NuGet-pakket Microsoft.Web.WebJobs.Publish en slaat u planningsgegevens op in een webjob-publish-settings.json-bestand in de map Projecteigenschappen van het WebJobs-project. Hier volgt een voorbeeld van dat bestand:

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

U kunt dit bestand rechtstreeks bewerken en Visual Studio biedt IntelliSense. Het bestandsschema wordt opgeslagen op https://schemastore.org en kan daar worden weergegeven.

bestand webjobs-list.json

Wanneer u een webtaakproject koppelt aan een webproject, slaat Visual Studio de naam van het WebJobs-project op in een webjobs-list.json-bestand in de map Eigenschappen van het webproject. De lijst kan meerdere WebJobs-projecten bevatten, zoals wordt weergegeven in het volgende voorbeeld:

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

U kunt dit bestand rechtstreeks in Visual Studio bewerken met IntelliSense. Het bestandsschema wordt opgeslagen op https://schemastore.org.

Een WebJobs-project implementeren

Een WebJobs-project dat u aan een webproject hebt gekoppeld, wordt automatisch geïmplementeerd met het webproject. Zie De> app implementeren inde linkernavigatiebalk voor meer informatie over de implementatie van webproject.

Als u een WebJobs-project zelf wilt implementeren, klikt u met de rechtermuisknop op het project in Solution Explorer en selecteert u Publiceren als Azure-webtaak.

Publiceren als Azure-webtaak

Voor een onafhankelijke webtaak wordt dezelfde wizard Web publiceren weergegeven die wordt gebruikt voor webprojecten, maar met minder instellingen die kunnen worden gewijzigd.

Dialoogvenster Azure-webtaak toevoegen

In het dialoogvenster Azure-webtaak toevoegen kunt u de naam van de webtaak en de instelling voor de uitvoeringsmodus voor uw webtaak invoeren.

Dialoogvenster Azure-webtaak toevoegen

Sommige velden in dit dialoogvenster komen overeen met velden in het dialoogvenster Webtaak toevoegen van de Azure Portal. Zie Achtergrondtaken uitvoeren met webtaken in Azure App Service voor meer informatie.

Informatie over webtaakimplementatie:

  • Zie Enabling Command-line or Continuous Delivery of Azure WebJobs (Opdrachtregel of Continue levering van Azure WebJobs inschakelen) voor meer informatie over de implementatie van de opdrachtregel.

  • Als u een webtaak implementeert en vervolgens besluit dat u het type webtaak wilt wijzigen en opnieuw wilt implementeren, verwijdert u het bestand webjobs-publish-settings.json . Hierdoor worden de publicatieopties opnieuw weergegeven in Visual Studio, zodat u het type webtaak kunt wijzigen.

  • Als u een webtaak implementeert en later de uitvoeringsmodus wijzigt van doorlopend in niet-doorlopend of omgekeerd, maakt Visual Studio een nieuwe webtaak in Azure wanneer u opnieuw implementeert. Als u andere planningsinstellingen wijzigt, maar de uitvoeringsmodus hetzelfde laat of schakelt tussen Gepland en Op aanvraag, werkt Visual Studio de bestaande taak bij in plaats van een nieuwe te maken.

Typen webtaken

Het type webtaak kan worden geactiveerd of doorlopend:

  • Geactiveerd (standaard): een geactiveerde webtaak wordt gestart op basis van een bindingsgebeurtenis, volgens een planning of wanneer u deze handmatig activeert (op aanvraag). Deze wordt uitgevoerd op één exemplaar waarop de web-app wordt uitgevoerd.

  • Doorlopend: een doorlopende webtaak wordt onmiddellijk gestart wanneer de webtaak wordt gemaakt. Het wordt standaard uitgevoerd op alle exemplaren met schaal van web-apps, maar kan worden geconfigureerd om als één exemplaar te worden uitgevoerd via settings.job.

Notitie

Een web-app kan na 20 minuten inactiviteit een time-out hebben en alleen aanvragen voor de werkelijke web-app kunnen de timer opnieuw instellen. De timer wordt niet gereset als de configuratie van de toepassing in de Azure-portal wordt bekeken of als aanvragen worden ingediend op de pagina met geavanceerde hulpmiddelen (https://<app_name>.scm.azurewebsites.net). Als u de web-app die als host fungeert voor uw taak zo instelt dat deze continu wordt uitgevoerd, volgens een schema wordt uitgevoerd of gebeurtenisgestuurde triggers gebruikt, schakelt u de instelling Altijd aan in op de pagina Azure-configuratie van uw web-app. Met de instelling Altijd aan kunt u ervoor zorgen dat dit soort webtaken betrouwbaar worden uitgevoerd. Deze functie is alleen beschikbaar in de prijscategorieën Basic, Standard en Premium.

Een geactiveerde webtaak plannen

Wanneer u een console-app naar Azure publiceert, stelt Visual Studio het type webtaak standaard in op Geactiveerd en wordt een nieuw settings.job-bestand aan het project toegevoegd. Voor geactiveerde webtaaktypen kunt u dit bestand gebruiken om een uitvoeringsschema voor uw webtaak in te stellen.

Gebruik het bestand settings.job om een uitvoeringsschema voor uw webtaak in te stellen. Het volgende voorbeeld wordt elk uur uitgevoerd van 9:00 tot 17:00 uur:

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

Dit bestand bevindt zich in de hoofdmap van de map WebJobs met het script van uw webtaak, zoals wwwroot\app_data\jobs\triggered\{job name} of wwwroot\app_data\jobs\continuous\{job name}. Wanneer u een webtaak implementeert vanuit Visual Studio, markeert u de eigenschappen van het bestand settings.job in Visual Studio als Kopiëren indien nieuwer.

Als u een webtaak maakt op basis van de Azure Portal, wordt het bestand settings.job voor u gemaakt.

CRON-expressies

WebJobs gebruikt dezelfde CRON-expressies voor planning als de timertrigger in Azure Functions. Zie Timertrigger voor Azure Functions voor meer informatie over CRON-ondersteuning.

Notitie

De standaardtijdzone die wordt gebruikt om CRON-expressies uit te voeren, is Coordinated Universal Time (UTC). Als u wilt dat uw CRON-expressie wordt uitgevoerd op basis van een andere tijdzone, maakt u een app-instelling voor de functie-app met de naam WEBSITE_TIME_ZONE. Zie NCRONTAB-tijdzones voor meer informatie.

naslaginformatie over settings.job

De volgende instellingen worden ondersteund door WebJobs:

Instelling Type Beschrijving
is_in_place Alles Hiermee kan de webtaak worden uitgevoerd zonder eerst te worden gekopieerd naar een tijdelijke map. Zie WebJob-werkmap voor meer informatie.
is_singleton Continu Voer de webtaak alleen uit op één exemplaar wanneer deze wordt uitgeschaald. Zie Een doorlopende taak instellen als singleton voor meer informatie.
schedule Geactiveerd Voer de webtaak uit volgens een CRON-schema. Zie NCRONTAB-expressies voor meer informatie.
stopping_wait_time Alles Hiermee kunt u het afsluitgedrag beheren. Zie Respijtvol afsluiten voor meer informatie.

Continue uitvoering

Als u AlwaysOn inschakelt in Azure, kunt u Visual Studio gebruiken om de webtaak te wijzigen zodat deze continu wordt uitgevoerd:

  1. Als u dit nog niet hebt gedaan, publiceert u het project naar Azure.

  2. Klik in Solution Explorer met de rechtermuisknop op het project en selecteer Publiceren.

  3. Kies in de sectie Instellingende optie Alle instellingen weergeven.

  4. Kies in het dialoogvenster Profielinstellingen de optie Doorlopend als WebTaaktype en kies vervolgens Opslaan.

    Dialoogvenster Publicatie-instellingen voor een webtaak

  5. Selecteer Publiceren op het tabblad Publiceren om de webtaak opnieuw te publiceren met de bijgewerkte instellingen.

Volgende stappen