Condividi tramite


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 nel 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 nel servizio app di Azure.

È possibile scegliere di sviluppare un processo Web che viene eseguito come app .NET Core o .NET Framework. La versione 3.x di Azure WebJobs SDK consente di sviluppare processi Web che vengono eseguiti come app .NET Core o .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, a condizione che 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 basata su eventi.

Annotazioni

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

Eseguire la distribuzione nel servizio app di Azure

La pubblicazione di un processo Web .NET Core nel 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 selezionare Pubblica.

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

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

  4. Sopra Istanze del servizio app 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 suggerito Descrizione
    Nome Nome globalmente univoco Nome che identifica in modo univoco la nuova app per le funzioni.
    Abbonamento Scegliere la sottoscrizione La sottoscrizione di Azure da usare.
    Gruppo di risorse il mio gruppo di risorse Nome del gruppo di risorse in cui creare l'app per le funzioni. Scegliere Nuovo per creare un nuovo gruppo di risorse.
    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. I piani di servizio app 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, i file di runtime vengono copiati nella cartella appropriata nell'app Web (App_Data/jobs/continuous per Processi Web continui e App_Data/jobs/triggered per Processi Web pianificati o su richiesta).

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

Diagramma che mostra cosa viene aggiunto 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 Processi Web in un file webjobs-list.json nel progetto Web.

Diagramma che mostra il collegamento del progetto WebJob al progetto Web

Prerequisiti

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

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

È possibile procedere in due modi:

  • Abilita la distribuzione automatica con un progetto Web.

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

  • Abilita la distribuzione senza un progetto Web.

    Configura un progetto di app console esistente per la distribuzione come processo Web da solo, senza un collegamento a un progetto Web. Usare questa opzione quando si vuole eseguire un processo Web in un'app Web da sola, senza alcuna applicazione Web in esecuzione nell'app Web. È possibile eseguire questa operazione per ridimensionare le risorse del processo Web indipendentemente dalle 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 Azure WebJob

    Verrà visualizzata la finestra di dialogo Aggiungi processo Web di Azure .

  2. Nell'elenco a discesa Nome progetto selezionare il progetto dell'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 dell'app console in Esplora soluzioni e quindi scegliere Pubblica come processo Web di Azure.

    Pubblicare come processo Web di Azure

    Verrà visualizzata la finestra di dialogo Aggiungi processo Web di 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 desidera pubblicare immediatamente, chiudere la procedura guidata. Le impostazioni immesse vengono salvate per il momento in cui si desidera distribuire il progetto.

Creare un nuovo progetto abilitato per Processi Web

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

Annotazioni

Il modello di nuovo progetto WebJobs installa automaticamente i pacchetti NuGet e include il codice in Program.cs 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 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.

    Nuova voce di menu Progetto processo Web di Azure

    Verrà visualizzata la finestra di dialogo Aggiungi processo Web di Azure .

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

webjob-publish-settings.json file

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 Processi Web. Ecco un esempio di quel 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 direttamente questo file e Visual Studio fornisce IntelliSense. Lo schema del file è memorizzato e https://schemastore.org può essere visualizzato lì.

webjobs-list.json file

Quando si collega un progetto abilitato per 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 può 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 è memorizzato 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> praticheDistribuire 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.

Pubblicare come processo Web di Azure

Per un processo Web indipendente, viene visualizzata la stessa procedura guidata Pubblica Web utilizzata per i progetti Web, ma con un numero inferiore di impostazioni disponibili per la modifica.

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 dei 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 nel 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 di Azure.

  • Se si distribuisce un processo Web e quindi si decide di modificare il tipo di processo Web e ridistribuirlo, eliminare il filewebjobs-publish-settings.json . In questo modo, Visual Studio visualizzerà nuovamente le opzioni di pubblicazione, in modo che sia possibile modificare il tipo di processo Web.

  • Se si distribuisce un processo Web e in un secondo momento si modifica la modalità di esecuzione da continua a non continua o viceversa, Visual Studio crea un nuovo processo Web in Azure quando si ridistribuisce. Se si modificano altre impostazioni di pianificazione, ma si lascia invariata la modalità di esecuzione o si passa da Pianificata a Su richiesta, Visual Studio aggiorna il processo esistente anziché crearne uno nuovo.

Tipi di processi Web

Il tipo di un 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 viene attivato 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.

Annotazioni

Un'app Web può raggiungere il timeout dopo 20 minuti di inattività e solo le richieste all'app Web effettiva possono reimpostare il timer. La visualizzazione della configurazione dell'app nel portale di Azure o l'esecuzione di richieste al sito degli strumenti avanzati non reimposta il timer. 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 nel riquadro 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 processo Web attivati, è possibile utilizzare questo file per impostare una pianificazione di esecuzione per il processo Web.

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

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

Questo file si trova nella directory principale 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

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

Annotazioni

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 da Processi Web:

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

Esecuzione continua

Se si abilita Sempre attivo in Azure, è possibile usare Visual Studio per modificare il processo Web in modo che venga eseguito in modo continuo:

  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 selezionare Pubblica.

  3. Nella sezione Impostazioni , scegli Mostra tutte le impostazioni.

  4. Nella finestra di dialogo Impostazioni profilo scegliere Continuo per Tipo di processo Web e quindi scegliere Salva.

    Finestra di dialogo Impostazioni pubblicazione per un processo Web

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

Passaggi successivi