Serviços de Segundo Plano
Visão Geral
O App Builder o recurso Serviços em segundo plano permite App Builder para executar eventos de longa duração em uma fila de segundo plano limitada. O serviço em si é hospedado pelo App Builder aplicativo web no IIS. Enquanto o site estiver em execução, o serviço em segundo plano estará em execução. Não requer nenhuma instalação ou configuração adicional.
Existem dois componentes envolvidos no App Builder serviço de segundo plano:
Fila de Fundo
Muitas vezes, um desenvolvedor cria um Evento que executa várias Ações, possivelmente abrangendo várias fontes de dados, ou mesmo chamadas REST para sistemas externos. A fila de segundo plano permite que o desenvolvedor especifique que o Evento deve ser executado em segundo plano em vez de em primeiro plano. Há alguns benefícios em fazer isso:
- Ao clicar em um botão para executar um Evento, o controle é imediatamente retornado ao cliente. O cliente pode continuar com seu trabalho enquanto o job continua a ser executado no sistema hospedar.
- A fila de fundo economiza recursos. Ao colocar eventos em segundo plano, o que de outra forma ocuparia recursos, o desenvolvedor permite App Builder para acelerar a execução desses Eventos. Conforme a carga no sistema cresce, o nível de paralelismo da Fila de Tarefas reduz. Isso permite que o servidor web opere com mais threads e mais acesso à CPU. Por exemplo, se 100 pessoas fizerem logon no site e clicarem em um botão que executa um Evento, o IIS precisaria lidar com 100 execuções simultâneas desse Evento. Ao enviar o Evento para a fila de tarefas, podemos reduzir a simultaneidade para executar apenas um pequeno número simultaneamente, o que libera recursos para o site.
-
A fila de segundo plano monitora eventos e armazena o histórico. Pretendemos estender essa funcionalidade a todos os Eventos no futuro. Por enquanto, se você estiver interessado em manter um log do histórico de execução de um Evento, incluindo:
- Quem executou o evento
- Quando eles o executaram
- Quanto tempo levou para ser executado
- Foi bem-sucedido (se não, quais erros ocorreram)
Estas informações estão disponíveis na seção Monitoramento do IDE. Na página inicial, você encontrará uma lista de serviços em execução e uma lista de agendamentos ou eventos em execução.
Nota
O Background Service apara as tabelas de log todos os dias. Ele exclui todos os eventos bem-sucedidos com mais de 7 dias e todos os eventos com falha com mais de 30 dias.
Para especificar que um Evento deve ser executado em segundo plano, o desenvolvedor deve localizar o Evento, clicar duas vezes no Evento, editá-lo e selecionar um Tipo de Execução de Launch Now (Background). Desse ponto em diante, App Builder enfileirará o Evento para execução sempre que um usuário o executar.
Se seu Evento tiver regras de validação, e essas regras retornarem um erro, App Builder retornará os resultados imediatamente ao usuário junto com as mensagens de validação e cancelará a execução do Evento na fila. Aviso Validações não são suportadas ao executar o Evento em segundo plano.
Se for apropriado, considere alterar a mensagem de sucesso do evento para que ela transmita ao usuário final que a operação está sendo executada em segundo plano.
O App Builder o Job Queue dorme indefinidamente, usando recursos mínimos até que um evento seja enfileirado. Ele não pesquisa por jobs para executar. Em vez disso, ele utiliza o Padrão Assíncrono Baseado em Tarefas da Microsoft, garantindo que os recursos do sistema sejam totalmente utilizados.
Agendador
App Builder suporta o agendamento da execução de Eventos em vez de exigir a execução manual de Eventos. O agendador, como a fila de tarefas, está em execução no Background Service enquanto o aplicativo da web estiver em execução. App Builder atualmente suporta um modo de execução para um Evento agendado, chamado execução multilinha. Isso é diferente de um Evento executado por clique de botão. Quando um usuário executa um Evento em um objeto de negócios, ele é executado em uma única linha. Quando o agendador executa um Evento, ele é executado em todo o objeto de negócios. Isso significa que a fila faz um loop em cada linha no objeto de negócios e executa o Evento agendado nessa linha. Ele faz isso enfileirando cada linha para execução pela fila de trabalhos.
Como os Eventos agendados são enviados à fila de trabalhos para execução, App Builder é capaz de aproveitar os benefícios de desempenho que vêm com a throttling da execução desses conjuntos de dados potencialmente grandes. Isso também fornece a mesma visibilidade para Eventos agendados com relação ao monitoramento e registro. Haverá uma entrada no log para cada linha executada pelo Evento agendado. As informações da chave primária para cada linha serão incluídas no log para auxiliar na localização e depuração de problemas.
Para agendar um Evento para execução, localize o Evento, clique duas vezes nele e defina o Tipo de Execução como Iniciar via Agenda (Plano de Fundo). Isso permitirá que o Evento seja anexado a um Agendamento.
Para criar um cronograma, vá para a seção Monitoramento no IDE. Clique em Cronogramas e crie um novo Cronograma.
A seguir estão os tipos de cronogramas App Builder suporta:
- Execução Única - Escolha um dia e hora no futuro para o Evento ser executado. App Builder executará o Evento no horário agendado e então desativará a programação.
- Execução Periódica - Executa o Evento a cada X segundos/minutos/horas.
- Execução Diária - Executa o Evento em um horário exato a cada X dias. Isso pode ser configurado para ser executado todos os dias, a cada 3 dias, a cada 7 dias e assim por diante.
- Execução Semanal - Execute o Evento em um horário exato, em um dia exato da semana, a cada X número de semanas. Nesta programação, o desenvolvedor pode escolher dias específicos da semana para executar o Evento. Por exemplo, execute todo domingo e quarta-feira às 19h.
- Execução Acionada - Executa o Evento em resposta a um sinal, como um usuário fazendo login no sistema.
Para adicionar um Evento a um cronograma, vá para a página Cronogramas e clique no ícone Eventos. Adicione o Evento ao cronograma, especificando uma simultaneidade máxima e o ID do usuário que executará o Evento. Se o objeto de negócios Evento retornar várias linhas, App Builder tentará executar o Evento em cada linha com a simultaneidade especificada. Por exemplo, se 100 linhas forem retornadas pelo objeto de negócios e a simultaneidade máxima for 3, App Builder tentará executar 3 instâncias do evento simultaneamente, até que o Evento tenha sido executado 100 vezes (uma vez para cada linha).
Nota
Veja o seguinte artigo em Executar como usuário se você estiver procurando executar um Evento Agendado como um Usuário especificado.
Instâncias de Serviço
Esta página permite que o usuário pare/inicie o serviço em segundo plano e monitore os serviços ativos e os trabalhos em execução.
- Ela fornece a data de início do serviço e o tempo de atividade.
-
Há botões Parar e Iniciar para parar o serviço em segundo plano.
-
Parar drenará todos os trabalhos em execução no momento para finalizar e cancelar quaisquer trabalhos existentes na fila. Também impedirá que quaisquer eventos agendados ou invocados sejam enfileirados.
- Iniciar iniciará o serviço em segundo plano novamente, limpará a tabela de atividades e começará a agendar e dar suporte ao evento em segundo plano
- A página não atualiza constantemente seu estado na IU, então há um botão Atualizar. Clicar em Atualizar carregará as informações mais recentes para as instâncias de serviço em execução e os trabalhos em execução sem exigir que o usuário atualize o navegador inteiro.
Página de Logs
- Mostra mensagens da instância atual em execução do serviço.
- Disponível na página Instâncias de serviço
Cancelamento de um Trabalho
Como App Builder cancela um trabalho é diferente dependendo do estado do trabalho e do tipo de trabalho que está sendo executado.
- Estado pendente - O trabalho foi criado e enfileirado, mas ainda não está em execução. Neste estado App Builder cancela imediatamente o trabalho.
- Estado em execução - Se o trabalho estiver em execução, App Builder envia uma solicitação de cancelamento para o trabalho. Algumas operações demoram mais para cancelar do que outras, e algumas operações não permitem interrupção. Quando o trabalho atinge um ponto que suporta cancelamento, ele cancelará e atualizará suas informações de atividade.
- Trabalho agendado - Se o trabalho for um trabalho agendado e tiver criado n número de trabalhos para executar o evento agendado. Cancelar o trabalho agendado também cancelará os trabalhos que ele iniciou. Em outras palavras, ele cancela toda a execução do agendamento.