Udostępnij za pośrednictwem


Opracowywanie i wdrażanie zadań WebJob przy użyciu programu Visual Studio

W tym artykule wyjaśniono, jak za pomocą programu Visual Studio wdrożyć projekt aplikacji konsolowej w aplikacji internetowej w Azure App Service jako zadania WebJob platformy Azure. Aby uzyskać informacje o sposobie wdrażania zadań WebJob przy użyciu Azure Portal, zobacz Uruchamianie zadań w tle za pomocą zadań WebJob w Azure App Service.

Możesz utworzyć obiekt WebJob, który działa jako aplikacja .NET Core lub aplikacja .NET Framework. Wersja 3.x zestawu SDK usługi Azure WebJobs umożliwia tworzenie zadań WebJob uruchamianych jako aplikacje platformy .NET Core lub aplikacje .NET Framework, a wersja 2.x obsługuje tylko .NET Framework. Sposób wdrażania projektu zadań WebJob różni się w przypadku projektów platformy .NET Core niż w przypadku projektów .NET Framework.

Możesz opublikować wiele zadań WebJob w jednej aplikacji internetowej, pod warunkiem że każde z zadań WebJob w aplikacji internetowej ma unikatową nazwę.

Zadania WebJob jako aplikacje konsolowe platformy .NET Core

W wersji 3.x zestawu SDK usługi Azure WebJobs można tworzyć i publikować zadania WebJob jako aplikacje konsolowe platformy .NET Core. Aby uzyskać instrukcje krok po kroku dotyczące tworzenia i publikowania aplikacji konsolowej platformy .NET Core na platformie Azure jako zadania WebJob, zobacz Wprowadzenie do zestawu SDK usługi Azure WebJobs na potrzeby przetwarzania w tle opartego na zdarzeniach.

Uwaga

Nie można łączyć zadań WebJob platformy .NET Core Web Apps i/lub .NET Core z projektami internetowymi. Jeśli musisz wdrożyć zadania WebJob przy użyciu aplikacji internetowej, utwórz zadania WebJob jako aplikację konsolową .NET Framework.

Wdrażanie w usłudze Azure App Service

Publikowanie zadania WebJob platformy .NET Core w celu Azure App Service z programu Visual Studio używa tego samego narzędzia co publikowanie aplikacji ASP.NET Core.

  1. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.

  2. W oknie dialogowym Publikowanie wybierz pozycję Azure dla pozycji Cel, a następnie wybierz pozycję Dalej.

  3. Wybierz pozycję Azure WebJobs dla określonego elementu docelowego, a następnie wybierz pozycję Dalej.

  4. Powyżej App Service wystąpienia wybierz przycisk plus (+), aby utworzyć nowy obiekt WebJob platformy Azure.

  5. W oknie dialogowym App Service (Windows) użyj ustawień hostingu w poniższej tabeli.

    Ustawienie Sugerowana wartość Opis
    Nazwa Nazwa unikatowa w skali globalnej Unikatowa nazwa identyfikująca nową aplikację funkcji.
    Subskrypcja Wybierz subskrypcję Subskrypcja platformy Azure, która ma być używana.
    Grupa zasobów myResourceGroup Nazwa grupy zasobów, w której ma zostać utworzona aplikacja funkcji. Wybierz pozycję Nowa, aby utworzyć nową grupę zasobów.
    Plan hostingu Plan usługi App Service Plan usługi App Service określa lokalizację, rozmiar i funkcje farmy serwerów sieci Web, która jest hostem aplikacji. Hostując wiele aplikacji, można zmniejszyć koszty przez skonfigurowanie aplikacji internetowych do korzystania z jednego planu usługi App Service. plany App Service definiują region, rozmiar wystąpienia, liczbę skalowania i jednostkę SKU (Bezpłatna, Współdzielona, Podstawowa, Standardowa lub Premium). Wybierz pozycję Nowy, aby utworzyć nowy plan App Service. Warstwy Bezpłatna i Podstawowa nie obsługują opcji Zawsze włączone, aby zachować ciągłość działania witryny.

    Okno dialogowe Create App Service (Tworzenie usługi App Service)

  6. Wybierz pozycję Utwórz, aby utworzyć zadania WebJob i powiązane zasoby na platformie Azure przy użyciu tych ustawień i wdrożyć kod projektu.

  7. Wybierz pozycję Zakończ , aby powrócić do strony Publikowanie .

Zadania WebJob jako aplikacje konsolowe .NET Framework

Jeśli używasz programu Visual Studio do wdrażania projektu aplikacji konsolowej z obsługą zadań WebJobs .NET Framework z obsługą usługi WebJobs, kopiuje pliki środowiska uruchomieniowego do odpowiedniego folderu w aplikacji internetowej (App_Data/jobs/continuous for continuous WebJobs i App_Data/jobs/triggered dla zaplanowanych lub na żądanie zadań WebJob).

Program Visual Studio dodaje następujące elementy do projektu z obsługą zadań WebJob:

Diagram przedstawiający, co jest dodawane do aplikacji konsolowej w celu włączenia wdrożenia jako zadania WebJob

Możesz dodać te elementy do istniejącego projektu aplikacji konsolowej lub użyć szablonu, aby utworzyć nowy projekt aplikacji konsolowej z obsługą zadań WebJobs.

Wdrażanie projektu jako zadania WebJob lub łączenie go z projektem internetowym w taki sposób, aby był wdrażany automatycznie przy każdym wdrożeniu projektu internetowego. Aby połączyć projekty, program Visual Studio zawiera nazwę projektu z obsługą zadań WebJobs w pliku webjobs-list.json w projekcie internetowym.

Diagram przedstawiający łączenie projektu zadania WebJob z projektem internetowym

Wymagania wstępne

Zainstaluj program Visual Studio 2022 przy użyciu obciążenia programistycznego platformy Azure.

Włączanie wdrożenia zadań WebJob dla istniejącego projektu aplikacji konsolowej

Dostępne są dwie opcje:

  • Włącz automatyczne wdrażanie za pomocą projektu internetowego.

    Skonfiguruj istniejący projekt aplikacji konsolowej, aby automatycznie wdrażał go jako zadania WebJob podczas wdrażania projektu internetowego. Użyj tej opcji, jeśli chcesz uruchomić zadania WebJob w tej samej aplikacji internetowej, w której uruchamiasz powiązaną aplikację internetową.

  • Włącz wdrożenie bez projektu internetowego.

    Skonfiguruj istniejący projekt aplikacji konsolowej do wdrożenia jako zadania WebJob bez linku do projektu internetowego. Użyj tej opcji, jeśli chcesz samodzielnie uruchomić zadania WebJob w aplikacji internetowej bez aplikacji internetowej działającej w aplikacji internetowej. Możesz to zrobić, aby skalować zasoby zadania WebJob niezależnie od zasobów aplikacji internetowej.

  1. Kliknij prawym przyciskiem myszy projekt internetowy w Eksplorator rozwiązań, a następnie wybierz pozycję Dodaj>istniejący projekt jako azure WebJob.

    Istniejący projekt jako usługa Azure WebJob

    Zostanie wyświetlone okno dialogowe Dodawanie zadania WebJob platformy Azure .

  2. Z listy rozwijanej Nazwa projektu wybierz projekt aplikacji konsolowej, aby dodać go jako zadania WebJob.

    Wybieranie projektu w oknie dialogowym Dodawanie zadania WebJob platformy Azure

  3. Ukończ okno dialogowe Dodawanie zadania WebJob platformy Azure , a następnie wybierz przycisk OK.

  1. Kliknij prawym przyciskiem myszy projekt aplikacji konsolowej w Eksplorator rozwiązań, a następnie wybierz pozycję Publikuj jako azure WebJob.

    Publikowanie jako zadania WebJob platformy Azure

    Zostanie wyświetlone okno dialogowe Dodawanie zadania WebJob platformy Azure z projektem wybranym w polu Nazwa projektu .

  2. Ukończ okno dialogowe Dodawanie zadania WebJob platformy Azure , a następnie wybierz przycisk OK.

    Zostanie wyświetlony kreator Publikowania w sieci Web . Jeśli nie chcesz publikować natychmiast, zamknij kreatora. Wprowadzone ustawienia są zapisywane, gdy chcesz wdrożyć projekt.

Tworzenie nowego projektu z obsługą zadań WebJob

Aby utworzyć nowy projekt z obsługą zadań WebJob, użyj szablonu projektu aplikacji konsolowej i włącz wdrożenie zadań WebJob, jak wyjaśniono w poprzedniej sekcji. Alternatywnie możesz użyć szablonu new-project zadania WebJobs:

Uwaga

Szablon new-project zadania WebJobs automatycznie instaluje pakiety NuGet i zawiera kod w pliku Program.cs dla zestawu SDK zadań WebJobs. Jeśli nie chcesz używać zestawu SDK zadań WebJobs, usuń lub zmień instrukcję host.RunAndBlock w pliku Program.cs.

  1. Wybierz pozycję Plik>nowy>projekt. W oknie dialogowym Tworzenie nowego projektu wyszukaj i wybierz pozycję Azure WebJob (.NET Framework) dla języka C#.

  2. Postępuj zgodnie z poprzednimi instrukcjami, aby projekt aplikacji konsolowej był niezależnym projektem zadań WebJob.

  1. Kliknij prawym przyciskiem myszy projekt internetowy w Eksplorator rozwiązań, a następnie wybierz pozycję Dodaj>nowy projekt zadania WebJob platformy Azure.

    Nowy wpis menu zadania WebJob platformy Azure

    Zostanie wyświetlone okno dialogowe Dodawanie zadania WebJob platformy Azure .

  2. Ukończ okno dialogowe Dodawanie zadania WebJob platformy Azure , a następnie wybierz przycisk OK.

plik webjob-publish-settings.json

Podczas konfigurowania aplikacji konsolowej na potrzeby wdrażania zadań WebJob program Visual Studio instaluje pakiet Microsoft.Web.WebJobs.Publish NuGet i przechowuje informacje o harmonogramie w pliku webjob-publish-settings.json w folderze właściwości projektu zadania WebJobs. Oto przykład tego pliku:

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

Ten plik można edytować bezpośrednio, a program Visual Studio zapewnia funkcję IntelliSense. Schemat pliku jest przechowywany w https://schemastore.org lokalizacji i można go tam wyświetlić.

plik webjobs-list.json

Po połączeniu projektu z obsługą zadań WebJobs do projektu internetowego program Visual Studio przechowuje nazwę projektu zadań WebJobs w pliku webjobs-list.json w folderze Properties projektu internetowego. Lista może zawierać wiele projektów zadań WebJob, jak pokazano w poniższym przykładzie:

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

Ten plik można edytować bezpośrednio w programie Visual Studio za pomocą funkcji IntelliSense. Schemat pliku jest przechowywany w lokalizacji https://schemastore.org.

Wdrażanie projektu zadań WebJob

Projekt zadań WebJob połączony z projektem internetowym jest wdrażany automatycznie przy użyciu projektu internetowego. Aby uzyskać informacje na temat wdrażania projektu internetowego, zobacz Przewodniki z instrukcjami>Wdrażanie aplikacji w obszarze nawigacji po lewej stronie.

Aby samodzielnie wdrożyć projekt zadań WebJob, kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i wybierz polecenie Publikuj jako azure WebJob.

Publikowanie jako zadania WebJob platformy Azure

W przypadku niezależnego zadania WebJob pojawia się ten sam kreator publikowania sieci Web , który jest używany dla projektów internetowych, ale z mniejszą liczbą ustawień dostępnych do zmiany.

Okno dialogowe Dodawanie zadania WebJob platformy Azure

Okno dialogowe Dodawanie zadania WebJob platformy Azure umożliwia wprowadzenie nazwy zadania WebJob i ustawienia trybu uruchamiania zadania WebJob.

Okno dialogowe Dodawanie zadania WebJob platformy Azure

Niektóre pola w tym oknie dialogowym odpowiadają polam w oknie dialogowym Dodawanie zadania WebJob Azure Portal. Aby uzyskać więcej informacji, zobacz Run background tasks with WebJobs in Azure App Service (Uruchamianie zadań w tle za pomocą zadań WebJob w Azure App Service).

Informacje o wdrożeniu zadania WebJob:

  • Aby uzyskać informacje na temat wdrażania wiersza polecenia, zobacz Włączanie wiersza polecenia lub ciągłego dostarczania zadań WebJob platformy Azure.

  • W przypadku wdrożenia zadania WebJob, a następnie podjęcia decyzji o zmianie typu zadania WebJob i ponownym wdrożeniu usuń plik webjobs-publish-settings.json . W ten sposób program Visual Studio może ponownie wydać opcje publikowania, dzięki czemu można zmienić typ zadania WebJob.

  • Jeśli wdrożysz zadanie WebJob, a później zmienisz tryb uruchamiania z ciągłego na ciągły lub odwrotnie, program Visual Studio utworzy nowe zadanie WebJob na platformie Azure po ponownym wdrożeniu. Jeśli zmienisz inne ustawienia planowania, ale pozostaw ten sam tryb uruchamiania lub przełączysz się między harmonogramem i na żądanie, program Visual Studio aktualizuje istniejące zadanie zamiast tworzyć nowe.

Typy zadań WebJob

Typ zadania WebJob może być wyzwalany lub ciągły:

  • Wyzwalane (ustawienie domyślne): wyzwalane zadanie WebJob jest uruchamiane na podstawie zdarzenia powiązania, harmonogramu lub ręcznego wyzwalania (na żądanie). Jest ona uruchamiana w jednym wystąpieniu, na których działa aplikacja internetowa.

  • Ciągłe: ciągłe zadanie WebJob jest uruchamiane natychmiast po utworzeniu zadania WebJob. Jest ona uruchamiana we wszystkich wystąpieniach skalowanych w aplikacji internetowej domyślnie, ale można ją skonfigurować do uruchamiania jako pojedyncze wystąpienie za pośrednictwem pliku settings.job.

Uwaga

Aplikacja internetowa może upłynął limit czasu po upływie 20 minut braku aktywności, a czasomierz może zresetować tylko żądania do rzeczywistej aplikacji internetowej. Wyświetlanie konfiguracji aplikacji w Azure Portal lub wykonywanie żądań do witryny narzędzi zaawansowanych (https://<app_name>.scm.azurewebsites.net) nie powoduje zresetowania czasomierza. Jeśli ustawisz aplikację internetową, która hostuje zadanie do ciągłego uruchamiania, uruchom je zgodnie z harmonogramem lub użyj wyzwalaczy sterowanych zdarzeniami, włącz ustawienie Zawsze włączone na stronie Konfiguracja platformy Azure aplikacji internetowej. Ustawienie Zawsze włączone pomaga upewnić się, że tego rodzaju zadania WebJob działają niezawodnie. Ta funkcja jest dostępna tylko w warstwach cenowych Podstawowa, Standardowa i Premium.

Planowanie wyzwalanego zadania WebJob

Podczas publikowania aplikacji konsolowej na platformie Azure program Visual Studio ustawia typ zadania WebJob na wartość Wyzwolone domyślnie i dodaje nowy plik settings.job do projektu. W przypadku wyzwalanych typów zadań WebJob można użyć tego pliku do ustawienia harmonogramu wykonywania zadania WebJob.

Użyj pliku settings.job , aby ustawić harmonogram wykonywania zadania WebJob. Poniższy przykład jest uruchamiany co godzinę od 9:00 do 17:00:

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

Ten plik znajduje się w katalogu głównym folderu Zadań WebJob za pomocą skryptu zadania WebJob, takiego jak wwwroot\app_data\jobs\triggered\{job name} lub wwwroot\app_data\jobs\continuous\{job name}. Podczas wdrażania zadania WebJob z poziomu programu Visual Studio oznacz właściwości pliku settings.job w programie Visual Studio jako kopiuj, jeśli są nowsze.

Jeśli tworzysz zadanie WebJob na podstawie Azure Portal, zostanie utworzony plik settings.job.

Wyrażenia CRON

Zadania WebJob używają tych samych wyrażeń CRON do planowania co wyzwalacz czasomierza w Azure Functions. Aby dowiedzieć się więcej na temat obsługi CRON, zobacz Wyzwalacz czasomierza dla Azure Functions.

Uwaga

Domyślna strefa czasowa używana do uruchamiania wyrażeń CRON to uniwersalny czas koordynowany (UTC). Aby wyrażenie CRON było uruchamiane na podstawie innej strefy czasowej, utwórz ustawienie aplikacji dla aplikacji funkcji o nazwie WEBSITE_TIME_ZONE. Aby dowiedzieć się więcej, zobacz NCRONTAB strefy czasowe.

settings.job reference

Następujące ustawienia są obsługiwane przez zadania WebJob:

Ustawienie Typ Opis
is_in_place Wszystko Umożliwia uruchamianie zadania WebJob bez uprzedniego kopiowania do folderu tymczasowego. Aby uzyskać więcej informacji, zobacz Katalog roboczy zadania WebJob.
is_singleton Ciągłe Uruchamiaj tylko zadania WebJob w jednym wystąpieniu po skalowaniu w poziomie. Aby uzyskać więcej informacji, zobacz Set a continuous job as singleton (Ustawianie ciągłego zadania jako pojedynczego).
schedule Wywołany Uruchom zadanie WebJob zgodnie z harmonogramem opartym na CRON. Aby uzyskać więcej informacji, zobacz wyrażenia NCRONTAB.
stopping_wait_time Wszystko Umożliwia sterowanie zachowaniem zamykania. Aby uzyskać więcej informacji, zobacz Graceful shutdown (Zamykanie w dziękcie).

Ciągłe wykonywanie

Jeśli włączysz opcję Zawsze włączone na platformie Azure, możesz użyć programu Visual Studio, aby zmienić zadanie WebJob w celu ciągłego uruchamiania:

  1. Jeśli jeszcze tego nie zrobiono, opublikuj projekt na platformie Azure.

  2. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.

  3. W sekcji Ustawienia wybierz pozycję Pokaż wszystkie ustawienia.

  4. W oknie dialogowym Ustawienia profilu wybierz pozycję Ciągłe dla pozycji Typ zadania WebJob, a następnie wybierz pozycję Zapisz.

    Okno dialogowe Ustawienia publikowania dla zadania WebJob

  5. Wybierz pozycję Publikuj na karcie Publikowanie , aby ponownie opublikować zadania WebJob ze zaktualizowanymi ustawieniami.

Następne kroki