Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo explica como usar o Visual Studio para implementar um projeto de aplicação de consola numa aplicação web em Azure App Service como um WebJob do Azure. Para informações sobre como implementar WebJobs usando o portal Azure, veja Executar tarefas em segundo plano com WebJobs em Azure App Service.
Pode optar por desenvolver um WebJob que funcione como uma aplicação .NET Core ou uma aplicação .NET Framework. A versão 3.x do Azure WebJobs SDK permite-lhe desenvolver WebJobs que correm como aplicações .NET Core ou aplicações .NET Framework, enquanto a versão 2.x suporta apenas o .NET Framework. A forma como se implementa um projeto WebJobs é diferente para projetos .NET Core do que para projetos .NET Framework.
Pode publicar vários WebJobs numa única aplicação web, se cada WebJob na aplicação web tiver um nome único.
WebJobs como aplicações de consola .NET Core
Com a versão 3.x do Azure WebJobs SDK, pode criar e publicar WebJobs como aplicações de consola .NET Core. Para instruções passo a passo para criar e publicar uma aplicação de consola .NET Core para Azure como WebJob, veja Comece com o SDK Azure WebJobs para processamento em segundo plano orientado a eventos.
Observação
.NET Core Web Apps e/ou .NET Core WebJobs não podem ser ligados a projetos web. Se precisares de implementar o teu WebJob com uma aplicação web, cria os teus WebJobs como uma aplicação de consola .NET Framework.
Implementar no Azure App Service
Publicar um WebJob Core .NET para Azure App Service a partir do Visual Studio utiliza as mesmas ferramentas que publicar uma aplicação ASP.NET Core.
Em Solution Explorer, clique com o botão direito no projeto e selecione Publicar.
Na caixa de diálogo Publicar, selecione Azure para Target, e depois selecione Próximo.
Selecione Azure WebJobs para Alvo específico, e depois selecione Próximo.
Acima das instâncias App Service selecione o botão plus (+) para Criar um novo WebJob Azure.
Na caixa de diálogo App Service (Windows), use as configurações de hospedagem na tabela seguinte.
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 para usar. 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.
Selecione Create para criar um WebJob e recursos relacionados em Azure com estas definições e implementar o código do seu projeto.
Selecione Concluir para retornar à página Publicar .
WebJobs como aplicações de consola do framework .NET
Se usar Visual Studio para implementar um projeto de aplicação de consola .NET Framework habilitado para WebJobs, ele copia ficheiros de tempo de execução para a pasta apropriada na aplicação web (App_Data/jobs/continuous para WebJobs contínuos e App_Data/jobs/triggered para WebJobs agendados ou sob demanda).
O Visual Studio adiciona os seguintes itens a um projeto habilitado pelo WebJobs:
- O Microsoft.Web.WebJobs.Publish pacote NuGet.
- Um arquivo webjob-publish-settings.json que contém configurações de implantação e agendador.
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 ligar projetos, Visual Studio inclui o nome do projeto habilitado pelo WebJobs num ficheiro webjobs-list.json no projeto web.
Pré-requisitos
Instalar o Visual Studio 2022 com a carga de trabalho de desenvolvimento 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.
Habilitar a implantação automática de WebJobs com um projeto da Web
Clique com o botão direito no projeto web em Solution Explorer e depois selecione Adicionar>Projeto Existente como um Azure WebJob.
A caixa de diálogo Add Azure WebJob aparece.
Na lista suspensa Nome do projeto, selecione o projeto da aplicação de consola para adicionar como WebJob.
Preencha a caixa de diálogo Add Azure WebJob e depois selecione OK.
Habilitar a implantação de WebJobs sem um projeto Web
Clique com o botão direito no projeto da aplicação de consola em Solution Explorer e depois selecione Publicar como Azure WebJob.
A caixa de diálogo Add Azure WebJob aparece, com o projecto selecionado na caixa Nome do projecto.
Preencha a caixa de diálogo Add Azure WebJob e depois selecione OK.
O assistente Publicar Web é exibido. Se não quiser publicar imediatamente, feche o assistente. As definições que introduzires são guardadas para quando quiseres implementar 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.
Usar o modelo de novo projeto WebJobs para um WebJob independente
Selecione File>Novo>Project. Na caixa de diálogo Criar um novo projeto, pesquise e selecione Azure WebJob (.NET Framework) para C#.
Siga as instruções anteriores para tornar o projeto do aplicativo de console um projeto WebJobs independente.
Usar o modelo de novo projeto WebJobs para um WebJob vinculado a um projeto Web
Clique com o botão direito do rato no projeto web em Solution Explorer e depois selecione Adicionar>Novo Projeto Azure WebJob.
A caixa de diálogo Add Azure WebJob aparece.
Preencha a caixa de diálogo Add Azure WebJob e depois selecione OK.
webjob-publish-settings.json arquivo
Quando configuras uma aplicação de consola para a implementação do WebJobs, Visual Studio instala o Microsoft. Web.WebJobs.Publish Pacote NuGet e armazena informação de agendamento num ficheiro webjob-publish-settings.json na pasta do projeto Properties do projeto WebJobs. Aqui está um exemplo desse ficheiro:
{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "WebJob1",
"startTime": "null",
"endTime": "null",
"jobRecurrenceFrequency": "null",
"interval": null,
"runMode": "Continuous"
}
Pode editar este ficheiro 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 liga um projeto habilitado para WebJobs a um projeto web, Visual Studio armazena o nome do projeto WebJobs num ficheiro webjobs-list.json na pasta Properties 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"
}
]
}
Pode editar este ficheiro diretamente no Visual Studio, com IntelliSense. O esquema de arquivo é armazenado em https://schemastore.org.
Implantar um projeto WebJobs
Um projeto WebJobs que liga a um projeto web é implementado 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 implementar um projeto WebJobs isoladamente, clique com o botão direito no projeto em Solution Explorer e selecione 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.
Adicionar a caixa de diálogo Azure WebJob
A caixa de diálogo Add Azure WebJob permite-te introduzir o nome do WebJob e a definição do modo de execução do teu WebJob.
Alguns dos campos nesta caixa de diálogo correspondem a campos na caixa de diálogo Add WebJob do portal Azure. Para mais informações, consulte Executar tarefas em segundo plano com WebJobs em Azure App Service.
Informações de implantação do WebJob:
Para informações sobre a implementação na linha de comando, veja Enabling Command-line or Continuous Delivery of Azure WebJobs.
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 . Ao fazê-lo, o Visual Studio volta a mostrar as opções de publicação, para que possa alterar o tipo de WebJob.
Se implementares um WebJob, e mais tarde mudares o modo de execução entre contínuo e triggered, Visual Studio cria um novo WebJob em Azure quando voltares a implementar. Se alterar outras definições de agendamento, mas deixar o modo de execução igual ou alternar entre Agendado e Sob Demanda, o Visual Studio atualiza 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. Visualizar a configuração da aplicação no portal do Azure ou fazer pedidos ao site das ferramentas avançadas não reinicia o temporizador. Se configurares a aplicação web que hospeda o teu trabalho para correr continuamente, num calendário ou usar triggers orientados a eventos, ativa a definição Sempre ligado no painel Azure Configuration da tua aplicação 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 publicas uma aplicação de consola para Azure, Visual Studio define o tipo de WebJob para Triggered por defeito, e adiciona um novo ficheiro 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 implementas um WebJob a partir de Visual Studio, marca as propriedades do teu ficheiro settings.job no Visual Studio como Copiar se for mais recente.
Se criar um WebJob a partir do portal Azure, o ficheiro settings.job será criado automaticamente.
Expressões CRON
O WebJobs utiliza as mesmas expressões CRON para agendamento que o disparador do temporizador no Azure Functions. Para saber mais sobre o suporte ao CRON, veja gatilho Timer para as Funções do Azure.
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
WebJobs suporta as seguintes definições no ficheiro settings.job :
| 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 ativares o Sempre ligado no Azure, podes usar Visual Studio para alterar o WebJob para correr continuamente:
Se o projeto ainda não estiver publicado, então publica o projeto para Azure.
Em Solution Explorer, clique com o botão direito no projeto e selecione Publicar.
Na seção Configurações , escolha Mostrar todas as configurações.
Na caixa de diálogo Configurações de perfil , escolha Contínuo para Tipo de Trabalho Web e, em seguida, escolha Salvar.
Selecione Publicar na guia Publicar para publicar novamente o WebJob com as configurações atualizadas.