Partilhar via


Desenvolver e implantar WebJobs usando o Visual Studio

Este artigo explica como usar o Visual Studio para implantar um projeto de aplicativo de console em um aplicativo Web no Serviço de Aplicativo do Azure como um WebJob do Azure. Para obter informações sobre como implantar WebJobs usando o portal do Azure, consulte Executar tarefas em segundo plano com WebJobs no Serviço de Aplicativo do Azure.

Você pode optar por desenvolver um WebJob que é executado como um aplicativo .NET Core ou um aplicativo .NET Framework. A versão 3.x do SDK de WebJobs do Azure permite desenvolver WebJobs que são executados como aplicativos .NET Core ou aplicativos .NET Framework, enquanto a versão 2.x oferece suporte apenas ao .NET Framework. A maneira como você implanta um projeto WebJobs é diferente para projetos .NET Core do que para projetos .NET Framework.

Você pode publicar vários WebJobs em um único aplicativo Web, desde que cada WebJob em um aplicativo Web tenha um nome exclusivo.

WebJobs como aplicativos de console do .NET Core

Com a versão 3.x do SDK de WebJobs do Azure, você pode criar e publicar WebJobs como aplicativos de console .NET Core. Para obter instruções passo a passo para criar e publicar um aplicativo de console .NET Core no Azure como um WebJob, consulte Introdução ao SDK do Azure WebJobs para processamento em segundo plano orientado a eventos.

Observação

Aplicativos Web .NET Core e/ou WebJobs .NET Core não podem ser vinculados a projetos da Web. Se você precisar implantar seu WebJob com um aplicativo Web, crie seu WebJobs como um aplicativo de console do .NET Framework.

Implantar no Serviço de Aplicações do Azure

A publicação de um WebJob .NET Core no Serviço de Aplicativo do Azure a partir do Visual Studio usa as mesmas ferramentas que a publicação de um aplicativo ASP.NET Core.

  1. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto e selecione Publicar.

  2. Na caixa de diálogo Publicar , selecione Azure para Destino e, em seguida, selecione Avançar.

  3. Selecione Azure WebJobs para destino específico e, em seguida, selecione Avançar.

  4. Acima das instâncias do Serviço de Aplicativo , selecione o botão de adição (+) para Criar um novo WebJob do Azure.

  5. Na caixa de diálogo Serviço de Aplicativo (Windows), use as configurações de hospedagem na tabela a seguir.

    Configurações Valor sugerido Descrição
    Designação Nome globalmente exclusivo Nome que identifica exclusivamente a sua nova aplicação de funções.
    Subscrição Escolha a sua subscrição A subscrição do Azure que deve utilizar.
    Grupo de recursos meuGrupoDeRecursos Nome do grupo de recursos no qual a sua aplicação de funções será criada. Escolha Novo para criar um novo grupo de recursos.
    Plano de Alojamento Plano do Serviço de Aplicações Um plano do Serviço de Aplicativo especifica o local, o tamanho e os recursos do farm de servidores Web que hospeda seu aplicativo. Pode economizar dinheiro ao alojar várias aplicações, configurando as aplicações Web para partilhar um único plano do serviço de aplicações. Os planos do Serviço de Aplicativo definem a região, o tamanho da instância, a contagem de escala e a SKU (Gratuito, Compartilhado, Básico, Standard ou Premium). Escolha Novo para criar um novo plano do Serviço de Aplicativo. As camadas Gratuita e Básica não suportam a opção Always On para manter seu site funcionando continuamente.

    Caixa de diálogo Criar Serviço de Aplicativo

  6. Selecione Criar para criar um WebJob e recursos relacionados no Azure com essas configurações e implantar o código do projeto.

  7. Selecione Concluir para retornar à página Publicar .

WebJobs como aplicativos de console do .NET Framework

Se você usar o Visual Studio para implantar um projeto de aplicativo de console do .NET Framework habilitado para WebJobs, ele copiará arquivos de tempo de execução para a pasta apropriada no aplicativo Web (App_Data/jobs/continuous para WebJobs contínuos e App_Data/jobs/trigger para WebJobs agendados ou sob demanda).

Visual Studio adiciona os seguintes itens a um projeto habilitado para WebJobs:

Diagrama mostrando o que é adicionado a um aplicativo de console para habilitar a implantação como um WebJob

Você pode adicionar esses itens a um projeto de aplicativo de console existente ou usar um modelo para criar um novo projeto de aplicativo de console habilitado para WebJobs.

Implante um projeto como um WebJob por si só, ou vincule-o a um projeto da Web para que ele seja implantado automaticamente sempre que você implantar o projeto da Web. Para vincular projetos, o Visual Studio inclui o nome do projeto habilitado para WebJobs em um arquivo webjobs-list.json no projeto Web.

Diagrama mostrando o projeto de WebJob ligando ao projeto Web

Pré-requisitos

Instale o Visual Studio 2022 com a carga de trabalho de desenvolvimento do Azure.

Habilitar a implantação de WebJobs para um projeto de aplicativo de console existente

Tem duas opções:

  • Habilite a implantação automática com um projeto Web.

    Configure um projeto de aplicativo de console existente para que ele seja implantado automaticamente como um WebJob quando você implantar um projeto Web. Use esta opção quando quiser executar seu WebJob no mesmo aplicativo Web em que você executa o aplicativo Web relacionado.

  • Habilite a implantação sem um projeto Web.

    Configure um projeto de aplicativo de console existente para implantar como um WebJob por si só, sem um link para um projeto Web. Use essa opção quando quiser executar um WebJob em um aplicativo Web sozinho, sem nenhum aplicativo Web em execução no aplicativo Web. Talvez você queira fazer isso para dimensionar seus recursos WebJob independentemente dos recursos do aplicativo Web.

  1. Clique com o botão direito do mouse no projeto Web no Gerenciador de Soluções e selecione Adicionar>Projeto Existente como Trabalho Web do Azure.

    Projeto existente como Azure WebJob

    A caixa de diálogo Adicionar Trabalho Web do Azure é exibida.

  2. Na lista suspensa Nome do projeto , selecione o projeto de aplicativo de console a ser adicionado como um WebJob.

    Selecionando projeto na caixa de diálogo Adicionar Trabalho Web do Azure

  3. Conclua a caixa de diálogo Adicionar Trabalho Web do Azure e selecione OK.

  1. Clique com o botão direito do mouse no projeto de aplicativo de console no Gerenciador de Soluções e selecione Publicar como Trabalho Web do Azure.

    Publicar como Azure WebJob

    A caixa de diálogo Adicionar Trabalho Web do Azure é exibida, com o projeto selecionado na caixa Nome do projeto .

  2. Conclua a caixa de diálogo Adicionar Trabalho Web do Azure e selecione OK.

    O assistente Publicar Web é exibido. Se não quiser publicar imediatamente, feche o assistente. As configurações que você inseriu são salvas para quando você deseja implantar o projeto.

Criar um novo projeto habilitado para WebJobs

Para criar um novo projeto habilitado para WebJobs, use o modelo de projeto de aplicativo de console e habilite a implantação de WebJobs conforme explicado na seção anterior. Como alternativa, você pode usar o modelo de novo projeto WebJobs:

  • Usar o modelo de novo projeto WebJobs para um WebJob independente

    Crie um projeto e configure-o para implantar sozinho como um WebJob, sem link para um projeto Web. Use essa opção quando quiser executar um WebJob em um aplicativo Web sozinho, sem nenhum aplicativo Web em execução no aplicativo Web. Talvez você queira fazer isso para dimensionar seus recursos WebJob independentemente dos recursos do aplicativo Web.

  • Usar o modelo de novo projeto WebJobs para um WebJob vinculado a um projeto Web

    Crie um projeto que esteja configurado para implantar automaticamente como um WebJob quando você implantar um projeto da Web na mesma solução. Use esta opção quando quiser executar seu WebJob no mesmo aplicativo Web em que você executa o aplicativo Web relacionado.

Observação

O modelo de novo projeto WebJobs instala automaticamente pacotes NuGet e inclui código em Program.cs para o SDK WebJobs. Se você não quiser usar o SDK WebJobs, remova ou altere a host.RunAndBlock instrução no Program.cs.

  1. Selecione Arquivo>Novo>Projeto. Na caixa de diálogo Criar um novo projeto , procure e selecione Azure WebJob (.NET Framework) para C#.

  2. Siga as instruções anteriores para tornar o projeto do aplicativo de console um projeto WebJobs independente.

  1. Clique com o botão direito do mouse no projeto Web no Gerenciador de Soluções e selecione Adicionar>Novo Projeto WebJob do Azure.

    Nova entrada de menu do Projeto WebJob do Azure

    A caixa de diálogo Adicionar Trabalho Web do Azure é exibida.

  2. Conclua a caixa de diálogo Adicionar Trabalho Web do Azure e selecione OK.

webjob-publish-settings.json arquivo

Quando você configura um aplicativo de console para implantação de WebJobs, o Visual Studio instala o pacote Microsoft.Web.WebJobs.Publish NuGet e armazena informações de agendamento em um arquivo webjob-publish-settings.json na pasta Propriedades do projeto WebJobs. Aqui está um exemplo desse arquivo:

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

Você pode editar esse arquivo diretamente e o Visual Studio fornece o IntelliSense. O esquema do arquivo é armazenado em https://schemastore.org e pode ser visualizado lá.

webjobs-list.json arquivo

Quando você vincula um projeto habilitado para WebJobs a um projeto Web, o Visual Studio armazena o nome do projeto WebJobs em um arquivo dewebjobs-list.json na pasta Propriedades do projeto Web. A lista pode conter vários projetos WebJobs, conforme mostrado no exemplo a seguir:

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

Você pode editar esse arquivo diretamente no Visual Studio, com o IntelliSense. O esquema de arquivo é armazenado em https://schemastore.org.

Implantar um projeto WebJobs

Um projeto WebJobs que você vinculou a um projeto Web é implantado automaticamente com o projeto Web. Para obter informações sobre a implantação de projetos da Web, consulte Guias >Implantar o aplicativo na navegação à esquerda.

Para implantar um projeto WebJobs por si só, clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Publicar como WebJob do Azure.

Publicar como Azure WebJob

Para um WebJob independente, o mesmo assistente de publicação da Web usado para projetos da Web é exibido, mas com menos configurações disponíveis para alteração.

Caixa de diálogo Adicionar Trabalho Web do Azure

A caixa de diálogo Adicionar WebJob do Azure permite inserir o nome do WebJob e a configuração do modo de execução para seu WebJob.

Caixa de diálogo Adicionar WebJob do Azure

Alguns dos campos nesta caixa de diálogo correspondem a campos na caixa de diálogo Adicionar Trabalho Web do portal do Azure. Para obter mais informações, consulte Executar tarefas em segundo plano com WebJobs no Serviço de Aplicativo do Azure.

Informações de implantação do WebJob:

  • Para obter informações sobre a implantação de linha de comando, consulte Habilitando a linha de comando ou a entrega contínua de WebJobs do Azure.

  • Se você implantar um WebJob e, em seguida, decidir que deseja alterar o tipo de WebJob e reimplantar, exclua o arquivo webjobs-publish-settings.json . Isso faz com que o Visual Studio reexiba as opções de publicação, para que você possa alterar o tipo de WebJob.

  • Se você implantar um WebJob e posteriormente alterar o modo de execução de contínuo para não contínuo ou vice-versa, o Visual Studio criará um novo WebJob no Azure quando você reimplantar. Se você alterar outras configurações de agendamento, mas deixar o modo de execução igual ou alternar entre Agendado e Sob Demanda, o Visual Studio atualizará o trabalho existente em vez de criar um novo.

Tipos de WebJob

O tipo de WebJob pode ser acionado ou contínuo:

  • Acionado (padrão): um WebJob acionado é iniciado com base em um evento de vinculação, em uma agenda ou quando você o aciona manualmente (sob demanda). Ele é executado em uma única instância na qual o aplicativo Web é executado.

  • Contínuo: Um WebJob contínuo começa imediatamente quando o WebJob é criado. Ele é executado em todas as instâncias dimensionadas do aplicativo Web por padrão, mas pode ser configurado para ser executado como uma única instância por meio de settings.job.

Observação

Uma aplicação web pode expirar após 20 minutos de inatividade, e apenas solicitações para a própria aplicação web podem redefinir o cronómetro. Exibir a configuração do aplicativo no portal do Azure ou fazer solicitações para o site de ferramentas avançadas não redefine o temporizador. Se você definir o aplicativo Web que hospeda seu trabalho para ser executado continuamente, executado em uma agenda ou usar gatilhos controlados por eventos, habilite a configuração Sempre ativado no painel Configuração do Azure do seu aplicativo Web. A configuração Sempre ligado ajuda a garantir que esses tipos de WebJobs sejam executados de forma confiável. Esse recurso está disponível apenas nos níveis de preços Basic, Standard e Premium.

Agendando um WebJob acionado

Quando você publica um aplicativo de console no Azure, o Visual Studio define o tipo de WebJob como Acionado por padrão e adiciona um novo arquivo settings.job ao projeto. Para tipos de WebJob acionados, você pode usar esse arquivo para definir um cronograma de execução para seu WebJob.

Use o arquivo settings.job para definir um cronograma de execução para seu WebJob. O exemplo a seguir é executado a cada hora, das 9h às 17h:

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

Esse arquivo está localizado na raiz da pasta WebJobs com o script do WebJob, como wwwroot\app_data\jobs\triggered\{job name} ou wwwroot\app_data\jobs\continuous\{job name}. Quando você implantar um WebJob do Visual Studio, marque as propriedades do arquivo settings.job no Visual Studio como Copiar se for mais recente.

Se você criar um WebJob a partir do portal do Azure, o arquivo settings.job será criado para você.

Expressões CRON

WebJobs utiliza as mesmas expressões CRON para agendamento que o acionador de temporizador no Azure Functions. Para saber mais sobre o suporte a CRON, consulte Gatilho de temporizador para o Azure Functions.

Observação

O fuso horário padrão usado para executar expressões CRON é o Tempo Universal Coordenado (UTC). Para que sua expressão CRON seja executada com base em outro fuso horário, crie uma configuração de aplicativo para seu aplicativo de função chamado WEBSITE_TIME_ZONE. Para saber mais, consulte Fusos horários NCRONTAB.

referência do trabalho settings

As seguintes configurações são suportadas pelo WebJobs:

Cenário Tipo Descrição
is_in_place Todos Permite que o WebJob seja executado no local sem primeiro ser copiado para uma pasta temporária. Para obter mais informações, consulte Diretório de trabalho WebJob.
is_singleton Contínuo Execute o WebJob apenas em uma única instância quando houver aumento de escala. Para obter mais informações, consulte Definir um trabalho contínuo como singleton.
schedule Acionado Execute o WebJob em uma agenda baseada em CRON. Para obter mais informações, consulte Expressões NCRONTAB.
stopping_wait_time Todos Permite controlar o comportamento durante o desligamento. Para obter mais informações, consulte Desligamento normal.

Execução contínua

Se você habilitar o Always On no Azure, poderá usar o Visual Studio para alterar o WebJob para ser executado continuamente:

  1. Se ainda não tiver feito isso, publique o projeto no Azure.

  2. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto e selecione Publicar.

  3. Na seção Configurações , escolha Mostrar todas as configurações.

  4. Na caixa de diálogo Configurações de perfil , escolha Contínuo para Tipo de Trabalho Web e, em seguida, escolha Salvar.

    Caixa de diálogo Configurações de publicação para um WebJob

  5. Selecione Publicar na guia Publicar para publicar novamente o WebJob com as configurações atualizadas.

Próximos passos