Distribuzione di processi Web usando Visual Studio

Overview

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

Quando distribuisce un progetto di applicazione console abilitato per i processi Web, Visual Studio esegue due attività:

  • Copia i file di runtime nella cartella appropriata nell'app Web (App_Data/jobs/continuous per i processi Web in modalità continua, App_Data/jobs/triggered per i processi Web pianificati e su richiesta).
  • Configura i processi dell'utilità di pianificazione di Azure per i processi Web pianificati per essere eseguiti a orari specifici. Tale operazione non è necessaria per l'esecuzione dei processi Web in modalità continua.

A un progetto abilitato per i processi Web vengono aggiunti gli elementi seguenti:

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 applicazione console esistente o usare un modello per creare un nuovo progetto di applicazione console abilitato per i processi Web.

È possibile distribuire un progetto come processo Web indipendente o collegarlo a un progetto Web in modo tale che venga distribuito automaticamente ogni volta che viene distribuito 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

Le funzionalità di distribuzione di processi Web sono disponibili in Visual Studio quando si installa Azure SDK per .NET:

Abilitare la distribuzione dei processi Web per un progetto di applicazione console esistente

Sono disponibili due opzioni:

  • Abilitare la distribuzione automatica con un progetto Web.

    Configurare un progetto di applicazione console esistente in modo tale che venga distribuito automaticamente come processo Web quando viene distribuito 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 applicazione console esistente in modo tale che venga distribuito come processo Web indipendente 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. Questa opzione potrebbe essere utile per scalare 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, 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 applicazione console da aggiungere come processo Web.

    Selezione del progetto nella finestra di dialogo Aggiungi processo Web Azure

  3. Completare la finestra di dialogo Aggiungi processo Web Azure , quindi fare clic su OK.
  1. Fare clic con il pulsante destro del mouse sul progetto di applicazione console in Esplora soluzioni e quindi scegliere Pubblica come processo Web 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 Azure , quindi fare clic su 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 i processi Web, è possibile usare il modello del progetto di applicazione console e abilitare la distribuzione dei processi Web come descritto nella sezione precedente. In alternativa, è possibile usare il modello nuovo-progetto di processi Web:

  • Usare il modello nuovo-progetto 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. Questa opzione potrebbe essere utile per scalare le risorse del processo Web indipendentemente dalle risorse dell'applicazione Web.

  • Usare il modello nuovo-progetto di processi Web per un processo Web collegato a un progetto Web

    Creare un progetto configurato in modo da essere distribuito automaticamente come processo Web quando viene distribuito 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. Fare clic su File > Nuovo progetto e quindi nella finestra di dialogo Nuovo progetto fare clic su Cloud > Processo Web Azure (.NET Framework).

    Finestra di dialogo Nuovo progetto con il modello processo Web

  2. Seguire le istruzioni illustrate in precedenza per rendere il progetto di applicazione console un progetto processi Web indipendente.
  1. Fare clic con il pulsante destro del mouse sul progetto Web in Esplora soluzioni, quindi scegliere Aggiungi > Nuovo progetto processo Web 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 Azure , quindi fare clic su OK.

Finestra di dialogo Aggiungi processo Web Azure

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

Finestra di dialogo Aggiungi processo Web Azure

I campi in questa finestra di dialogo corrispondono ai campi presenti nella finestra di dialogo Nuovo processo del portale di Azure. Per ulteriori informazioni, vedere attività in Background eseguito con WebJobs.

Nota
  • 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 desidera modificare il tipo di processo Web e ridistribuire, è necessario eliminare il file settings.json webjobs di pubblicazione. In questo modo Visual Studio Mostra le opzioni di pubblicazione, è possibile 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 le altre impostazioni di pianificazione lasciando invariata la modalità di esecuzione o passando dalla modalità pianificata a quella su richiesta o viceversa, Visual Studio aggiorna il processo esistente anziché crearne uno nuovo.

webjob-publish-settings.json

Quando si configura un'applicazione console per la distribuzione dei 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. 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 http://schemastore.org da dove può essere visualizzato.

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 e Visual Studio fornisce IntelliSense. Lo schema del file viene archiviato in http://schemastore.org da dove può essere visualizzato.

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 dei progetti Web, vedere Come distribuire su App Web.

Per distribuire un progetto processi Web indipendente, fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni, quindi scegliere Pubblica come processo Web 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.

Passaggi successivi

Questo articolo ha descritto come distribuire processi Web tramite Visual Studio. Per altre informazioni su come distribuire Processi Web di Azure, vedere Risorse di documentazione di Processi Web di Azure.