Sviluppare e distribuire processi Web con Visual Studio

Questo articolo illustra come usare Visual Studio per distribuire un progetto di app console in un'app Web in Servizio app di Azure come processo Web di Azure. Per informazioni su come distribuire processi Web usando il portale di Azure, vedere Eseguire attività in background con processi Web in Servizio app di Azure.

È possibile scegliere di sviluppare un processo Web eseguito come app .NET Core o come app .NET Framework. La versione 3.x di Azure WebJobs SDK consente di sviluppare processi Web eseguiti come app .NET Core o app .NET Framework, mentre la versione 2.x supporta solo .NET Framework. Il modo in cui si distribuisce un progetto processi Web è diverso per i progetti .NET Core rispetto ai progetti .NET Framework.

È possibile pubblicare più processi Web in una singola app Web, purché ogni processo Web in un'app Web abbia un nome univoco.

Processi Web come app console .NET Core

Con la versione 3.x di Azure WebJobs SDK, è possibile creare e pubblicare processi Web come app console .NET Core. Per istruzioni dettagliate su come creare e pubblicare un'app console .NET Core in Azure come processo Web, vedere Introduzione ad Azure WebJobs SDK per l'elaborazione in background guidata dagli eventi.

Nota

I processi Web .NET Core App Web e/o .NET Core non possono essere collegati a progetti Web. Se è necessario distribuire il processo Web con un'app Web, creare processi Web come app console .NET Framework.

Distribuire nel Servizio app di Azure

La pubblicazione di un processo Web .NET Core in Servizio app di Azure da Visual Studio usa gli stessi strumenti della pubblicazione di un'app ASP.NET Core.

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Pubblica.

  2. Nella finestra di dialogo Pubblica selezionare Azure per Destinazione e quindi avanti.

  3. Selezionare Processi Web di Azure per Destinazione specifica e quindi selezionare Avanti.

  4. Sopra servizio app istanze selezionare il pulsante più (+) per creare un nuovo processo Web di Azure.

  5. Nella finestra di dialogo servizio app (Windows) usare le impostazioni di hosting nella tabella seguente.

    Impostazione Valore consigliato Descrizione
    Nome Nome globalmente univoco Nome che identifica in modo univoco la nuova app per le funzioni.
    Sottoscrizione Scegliere la sottoscrizione Sottoscrizione di Azure da usare.
    Gruppo di risorse myResourceGroup Nome del gruppo di risorse in cui creare l'app per le funzioni. Per creare un nuovo gruppo di risorse scegliere Nuovo.
    Piano di hosting Piano di servizio app Un piano di servizio app specifica la località, le dimensioni e le funzionalità della server farm Web che ospita l'app. Quando si ospitano più app, è possibile limitare i costi configurando le app Web in modo che condividano un singolo piano di servizio app. servizio app piani definiscono l'area, le dimensioni dell'istanza, il numero di scalabilità e lo SKU (Gratuito, Condiviso, Basic, Standard o Premium). Scegliere Nuovo per creare un nuovo piano di servizio app. I livelli Gratuito e Basic non supportano l'opzione Always On per mantenere il sito in esecuzione continuamente.

    Finestra di dialogo Crea servizio app

  6. Selezionare Crea per creare un processo Web e le risorse correlate in Azure con queste impostazioni e distribuire il codice del progetto.

  7. Selezionare Fine per tornare alla pagina Pubblica .

Processi Web come app console .NET Framework

Se si usa Visual Studio per distribuire un progetto di app console .NET Framework abilitato per Processi Web, copia i file di runtime nella cartella appropriata nell'app Web (App_Data/jobs/continuous per processi Web continui e App_Data/jobs/trigger per processi Web pianificati o su richiesta).

Visual Studio aggiunge gli elementi seguenti a un progetto abilitato per processi Web:

Diagramma che mostra gli elementi aggiunti a un'app console per abilitare la distribuzione come processo Web

È possibile aggiungere questi elementi a un progetto di app console esistente o usare un modello per creare un nuovo progetto di app console abilitato per Processi Web.

Distribuire un progetto come processo Web da solo o collegarlo a un progetto Web in modo che venga distribuito automaticamente ogni volta che si distribuisce il progetto Web. Per collegare i progetti, Visual Studio include il nome del progetto abilitato per i processi Web in un file webjobs-list.json nel progetto Web.

Diagramma che mostra il collegamento del progetto processo Web al progetto Web

Prerequisiti

Installare Visual Studio 2022 con il carico di lavoro Sviluppo di Azure.

Abilitare la distribuzione di processi Web per un progetto di app console esistente

Sono disponibili due opzioni:

  • Abilitare la distribuzione automatica con un progetto Web.

    Configurare un progetto di app console esistente in modo che venga distribuito automaticamente come processo Web quando si distribuisce un progetto Web. Usare questa opzione quando si vuole eseguire il processo Web nella stessa app Web in cui viene eseguita l'applicazione Web correlata.

  • Abilitare la distribuzione senza un progetto Web.

    Configurare un progetto di app console esistente da distribuire come processo Web autonomamente, senza un collegamento a un progetto Web. Usare questa opzione quando si vuole eseguire un processo Web in un'app Web in modo indipendente senza l'esecuzione dell'applicazione Web nell'app Web. È possibile eseguire questa operazione per ridimensionare le risorse del processo Web indipendentemente da risorse dell'applicazione Web.

  1. Fare clic con il pulsante destro del mouse sul progetto Web in Esplora soluzioni e quindi scegliere Aggiungi>progetto esistente come processo Web di Azure.

    Progetto esistente come processo Web Azure

    Viene visualizzata la finestra di dialogo Aggiungi processo Web Azure .

  2. Nell'elenco a discesa Nome progetto selezionare il progetto di app console da aggiungere come processo Web.

    Selezione del progetto nella finestra di dialogo Aggiungi processo Web di Azure

  3. Completare la finestra di dialogo Aggiungi processo Web di Azure e quindi selezionare OK.

  1. Fare clic con il pulsante destro del mouse sul progetto di app console in Esplora soluzioni e quindi scegliere Pubblica come processo Web di Azure.

    Pubblica come processo Web Azure

    Viene visualizzata la finestra di dialogo Aggiungi processo Web Azure con il progetto selezionato nella casella Nome progetto .

  2. Completare la finestra di dialogo Aggiungi processo Web di Azure e quindi selezionare OK.

    Viene visualizzata la procedura guidata Pubblica sito Web . Se non si vuole eseguire subito la pubblicazione, chiudere la procedura guidata. Le impostazioni immesse vengono salvate in modo da poter essere usate quando si vuole distribuire il progetto.

Creare un nuovo progetto abilitato per i processi Web

Per creare un nuovo progetto abilitato per processi Web, usare il modello di progetto dell'app console e abilitare la distribuzione dei processi Web, come illustrato nella sezione precedente. In alternativa, è possibile usare il modello nuovo-progetto di processi Web:

  • Usare il modello new-project di Processi Web per un processo Web indipendente

    Creare un progetto e configurarlo per essere distribuito in modo indipendente come processo Web senza alcun collegamento a un progetto Web. Usare questa opzione quando si vuole eseguire un processo Web in un'app Web in modo indipendente senza l'esecuzione dell'applicazione Web nell'app Web. È possibile eseguire questa operazione per ridimensionare le risorse del processo Web indipendentemente da risorse dell'applicazione Web.

  • Usare il modello new-project di Processi Web per un processo Web collegato a un progetto Web

    Creare un progetto configurato per la distribuzione automatica come processo Web quando si distribuisce un progetto Web nella stessa soluzione. Usare questa opzione quando si vuole eseguire il processo Web nella stessa app Web in cui viene eseguita l'applicazione Web correlata.

Nota

Il modello new-project di Processi Web installa automaticamente pacchetti NuGet e in Program.cs include codice per WebJobs SDK. Se non si vuole usare WebJobs SDK, rimuovere o modificare l'istruzione host.RunAndBlock in Program.cs.

  1. Selezionare File>New (Nuovo) >Project (Progetto). Nella finestra di dialogo Crea un nuovo progetto cercare e selezionare Processo Web di Azure (.NET Framework) per C#.

  2. Seguire le istruzioni precedenti per rendere il progetto dell'app console un progetto di processi Web indipendente.

  1. Fare clic con il pulsante destro del mouse sul progetto Web in Esplora soluzioni e quindi scegliere Aggiungi>nuovo progetto processo Web di Azure.

    Voce del menu Nuovo progetto processo Web Azure

    Viene visualizzata la finestra di dialogo Aggiungi processo Web Azure .

  2. Completare la finestra di dialogo Aggiungi processo Web di Azure e quindi selezionare OK.

file webjob-publish-settings.json

Quando si configura un'app console per la distribuzione di Processi Web, Visual Studio installa il pacchetto NuGet Microsoft.Web.WebJobs.Publish e archivia le informazioni di pianificazione in un file webjob-publish-settings.json nella cartella Proprietà del progetto WebJobs. Di seguito è riportato un esempio di tale file:

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

È possibile modificare questo file direttamente e Visual Studio fornisce IntelliSense. Lo schema del file viene archiviato in https://schemastore.org da dove può essere visualizzato.

file webjobs-list.json

Quando si collega un progetto abilitato per i processi Web a un progetto Web, Visual Studio archivia il nome del progetto processi Web in un file webjobs-list.json nella cartella Proprietà del progetto Web. L'elenco potrebbe contenere più progetti processi Web, come illustrato nell'esempio seguente:

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

È possibile modificare questo file direttamente in Visual Studio con IntelliSense. Lo schema del file viene archiviato in https://schemastore.org.

Distribuire un progetto processi Web

Un progetto processi Web collegato a un progetto Web viene distribuito automaticamente con il progetto Web. Per informazioni sulla distribuzione del progetto Web, vedere Guide pratiche>Distribuire l'app nel riquadro di spostamento a sinistra.

Per distribuire un progetto processi Web da solo, fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e scegliere Pubblica come processo Web di Azure.

Pubblica come processo Web Azure

Per un processo Web indipendente viene visualizzata la stessa procedura guidata Pubblica sito Web usata per i progetti Web ma con meno impostazioni disponibili da modificare.

Finestra di dialogo Aggiungi processo Web di Azure

La finestra di dialogo Aggiungi processo Web di Azure consente di immettere il nome del processo Web e l'impostazione della modalità di esecuzione per il processo Web.

Finestra di dialogo Aggiungi processo Web di Azure

Alcuni campi di questa finestra di dialogo corrispondono ai campi della finestra di dialogo Aggiungi processo Web del portale di Azure. Per altre informazioni, vedere Eseguire attività in background con processi Web in Servizio app di Azure.

Informazioni sulla distribuzione del processo Web:

  • Per informazioni sulla distribuzione da riga di comando, vedere Abilitazione della riga di comando o del recapito continuo di processi Web Azure.

  • Se si distribuisce un processo Web e si decide di modificare il tipo di processo Web e ridistribuire, eliminare il file webjobs-publish-settings.json . In questo modo Visual Studio visualizza nuovamente le opzioni di pubblicazione, in modo da poter modificare il tipo di processo Web.

  • Se si distribuisce un processo Web e successivamente si modifica la modalità di esecuzione da continua a non continua o viceversa, Visual Studio crea un nuovo processo Web in Azure quando si esegue nuovamente la distribuzione. Se si modificano altre impostazioni di pianificazione, ma si lascia la stessa modalità di esecuzione o si passa da Pianificazione a On Demand, Visual Studio aggiorna il processo esistente anziché crearne uno nuovo.

Tipi di processi Web

Il tipo di processo Web può essere attivato o continuo:

  • Attivato (impostazione predefinita): un processo Web attivato viene avviato in base a un evento di associazione, a una pianificazione o quando lo si attiva manualmente (su richiesta). Viene eseguito in una singola istanza in cui viene eseguita l'app Web.

  • Continuo: un processo Web continuo viene avviato immediatamente quando viene creato il processo Web. Viene eseguito in tutte le istanze ridimensionate dell'app Web per impostazione predefinita, ma può essere configurato per l'esecuzione come singola istanza tramite settings.job.

Nota

Un'app Web può scadere dopo 20 minuti di inattività e solo le richieste all'app Web effettiva possono reimpostare il timer. Se si visualizza la configurazione dell'app nel portale di Azure o si effettuano richieste al sito degli strumenti avanzati (https://<app_name>.scm.azurewebsites.net), il timer non verrà reimpostato. Se si imposta l'app Web che ospita il processo per l'esecuzione continua, l'esecuzione in base a una pianificazione o l'uso di trigger basati su eventi, abilitare l'impostazione Always On nella pagina Configurazione di Azure dell'app Web. L'impostazione AlwaysOn consente di assicurarsi che questi tipi di processi Web vengano eseguiti in modo affidabile. Questa funzionalità è disponibile solo nei piani tariffari Basic, Standard e Premium.

Pianificazione di un processo Web attivato

Quando si pubblica un'app console in Azure, Visual Studio imposta il tipo di processo Web su Attivato per impostazione predefinita e aggiunge un nuovo file settings.job al progetto. Per i tipi di processi Web attivati, è possibile usare questo file per impostare una pianificazione di esecuzione per il processo Web.

Usare il file settings.job per impostare una pianificazione di esecuzione per il processo Web. L'esempio seguente viene eseguito ogni ora dalle 9:00 alle 17:00:

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

Questo file si trova nella radice della cartella Processi Web con lo script del processo Web, ad esempio wwwroot\app_data\jobs\triggered\{job name} o wwwroot\app_data\jobs\continuous\{job name}. Quando si distribuisce un processo Web da Visual Studio, contrassegnare le proprietà del file settings.job in Visual Studio come copia se più recente.

Se si crea un processo Web dal portale di Azure, il file settings.job viene creato automaticamente.

Espressioni CRON

I processi Web usano le stesse espressioni CRON per la pianificazione del trigger timer in Funzioni di Azure. Per altre informazioni sul supporto di CRON, vedere Trigger timer per Funzioni di Azure.

Nota

Il fuso orario predefinito usato per eseguire le espressioni CRON è UTC (Coordinated Universal Time). Per fare in modo che l'espressione CRON eseguita sia basata su un altro fuso orario, creare un'impostazione per l'app per le funzioni denominata WEBSITE_TIME_ZONE. Per altre informazioni, vedere Fusi orari NCRONTAB.

Informazioni di riferimento su settings.job

Le impostazioni seguenti sono supportate dai processi Web:

Impostazione Tipo Descrizione
is_in_place Tutti Consente l'esecuzione del processo Web sul posto senza prima essere copiata in una cartella temporanea. Per altre informazioni, vedere Directory di lavoro processo Web.
is_singleton Continua Eseguire il processo Web solo in una singola istanza quando si aumenta il numero di istanze. Per altre informazioni, vedere Impostare un processo continuo come singleton.
schedule Attivato Eseguire il processo Web in base a una pianificazione basata su CRON. Per altre informazioni, vedere Espressioni NCRONTAB.
stopping_wait_time Tutti Consente il controllo del comportamento di arresto. Per altre informazioni, vedere l'articolo sull' arresto normale dei processi.

Esecuzione continua

Se si abilita Always On in Azure, è possibile usare Visual Studio per modificare il processo Web per l'esecuzione continua:

  1. Se non è già stato fatto, pubblicare il progetto in Azure.

  2. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Pubblica.

  3. Nella sezione Impostazioni scegliere Mostra tutte le impostazioni.

  4. Nella finestra di dialogo Impostazioni profilo scegliere Continuous for WebJob Type (Continua per tipo processo Web) e quindi scegliere Salva.

    Finestra di dialogo Impostazioni di pubblicazione per un processo Web

  5. Selezionare Pubblica nella scheda Pubblica per ripubblicare il processo Web con le impostazioni aggiornate.

Passaggi successivi