Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A abordagem adotada para implementar trabalhos de timer é diferente no novo modelo de suplemento do SharePoint do que era com o Código de Confiança Total. Em um cenário típico de FTC (Código de Confiança Total) / Solução de Farm, os Trabalhos de Timer do SharePoint foram criados com o código do Modelo de Objeto do Servidor do SharePoint-Side, implantados por meio de Soluções de Farm e gerenciados no site da Administração Central do SharePoint. O SharePoint lida com o agendamento e a execução do trabalho de timer nesse cenário.
No cenário de modelo de suplemento do SharePoint, trabalhos de timer são criados e agendados fora do SharePoint. O SharePoint não é responsável pelo agendamento ou pela execução do trabalho de timer neste cenário.
Diretrizes de alto nível
Como regra geral, gostaríamos de fornecer as seguintes diretrizes de alto nível para a criação de trabalhos de timer.
- Trabalhos do temporizador devem ser implementados fora do SharePoint.
- O agendamento de trabalhos do temporizador deve ser implementado fora do SharePoint.
- Trabalhos do temporizador devem ser autenticados por meio de uma conta de serviço ou OAuth.
Desafios ao criar trabalhos de timer
O maior desafio associado à criação de trabalhos de timer em locações do Office 365 é o fato de que você não pode implantar soluções com escopo de farm em uma locação do Office 365. Sem uma solução com escopo de farm, você não pode implantar um trabalho de timer do SharePoint.
A nova maneira de criar um trabalho de timer é criá-lo fora do SharePoint e lidar com o agendamento fora do SharePoint também. Considere os seguintes fatores associados a trabalhos de timer do SharePoint para um ambiente local do SharePoint.
- O SharePoint é fornecido com centenas de trabalhos de timer prontos para uso que o agendador do SharePoint se esforça para acompanhar.
- Você pode reduzir a quantidade de memória e energia do processador necessária no servidor do SharePoint movendo o código de implementação para o Azure ou outro ambiente.
- Mover o código de agendamento e implementação associado a trabalhos de timer para outro servidor torna o servidor do SharePoint mais escalonável e estável como resultado.
Opções para agendar trabalhos de timer
Você tem algumas opções para implementar o agendamento para um trabalho de timer.
- Agendador do Windows
- Serviço Windows
- Azure WebJob
- Processo de trabalho do Azure
Agendador do Windows
Nesse padrão, o Windows Scheduler lida com os aspectos de agendamento associados a um trabalho do temporizador. O código de implementação pode ser um aplicativo de console, um script do PowerShell ou outro código que o Windows Scheduler possa invocar.
Subopção de Serviço do Windows
Um Serviço do Windows tem as mesmas características do Agendador do Windows. A Microsoft não recomenda esse padrão, mas vale a pena mencioná-lo porque ele é comumente usado.
Quando o Agendador do Windows é uma boa opção?
Quando você não tem acesso a uma assinatura do Azure para agendar trabalhos de timer com os Trabalhos Web do Azure, usar um Agendador do Windows é uma boa opção, pois essa opção pode ser implementada em qualquer computador com o sistema operacional Windows.
- Requer hardware adicional para executar o Agendador do Windows.
- Requer hardware adicional para executar o código de trabalho do timer.
Guia de Introdução
Os artigos a seguir usam o padrão do Agendador do Windows e fornecem exemplos de código para você começar.
-
Core.SimpleTimerJob (exemplo PnP do Microsoft 365)
- Artigo de ponta a ponta sobre esse padrão com o vídeo que o acompanha.
-
Core.TimerJobs.Samples (exemplo PnP do Microsoft 365)
- Excelentes exemplos de código abrangendo 10 exemplos diferentes. Observação: nem todos os 10 exemplos de código são aplicáveis ao padrão do Agendador do Windows.
Azure WebJob
Nesse padrão, o Azure WebJob cuida dos aspectos de agendamento associados a um trabalho do temporizador e inclui o código de implementação.
- Não requer hardware adicional para executar o Trabalho Web do Azure (código de agendamento e implementação).
- É vantajoso porque usa o Azure WebJob para agendamento, bem como o código de implementação, o que facilita o gerenciamento em um único local.
Subopção de função de trabalho do Azure
Uma Função de Trabalho do Azure tem as mesmas características de um Trabalho Web do Azure. A Microsoft não recomenda esse padrão, mas vale a pena mencioná-lo porque ele é comumente usado.
Quando o Trabalho Web do Azure é uma boa opção?
Quando você tiver acesso a uma assinatura do Azure para agendar trabalhos de timer com os Trabalhos Web do Azure.
Guia de Introdução
Os artigos a seguir descrevem o padrão de Trabalho Web do Azure e fornecem exemplos de código para você começar.
-
Introdução ao Azure WebJobs para sites do Office 365
- Descreve como criar um WebJob do Azure para atuar como um trabalho agendado para seu ambiente do Office 365 ou SharePoint local. Inclui informações de publicação e monitoramento.
-
Core.SimpleTimerJob (exemplo PnP do Microsoft 365)
- Excelentes exemplos de código abrangendo 10 exemplos diferentes. Observação: nem todos os 10 exemplos de código são aplicáveis ao padrão WebJob do Azure.
Opções de autenticação
Para que seus trabalhos de timer interajam com o SharePoint, eles devem ser autenticados. Atualmente, há dois padrões que você pode usar para autenticar trabalhos de timer.
- Usar uma conta de serviço
- Usar OAuth
Usar uma conta de serviço
Nesse padrão, você define uma ou mais contas de serviço usadas para autenticar trabalhos de timer.
Contas de serviço são definidas no SharePoint.
- Em uma locação do Office 365, dependendo da funcionalidade dos trabalhos de timer, as contas de serviço podem precisar de uma licença do Office 365 atribuída a elas.
- Você pode criar contas de serviço por trabalho de timer ou usar uma única conta para todos os trabalhos de timer.
- Crie nomes claros e descritivos para as contas de serviço para que você possa acompanhar facilmente as operações que forem executadas.
Por exemplo: se o trabalho de timer modificar itens de lista, a coluna Modificado por para os itens de lista exibirá o nome da conta de serviço associada ao trabalho de timer.
Ao autenticar com contas de serviço, você deve recuperar o nome de usuário e a senha da conta de serviço.
O trecho de código a seguir ilustra o uso de um nome de usuário e senha para autenticação.
Tome cuidado para armazenar e recuperar o nome de usuário e senha de forma segura.
using (ClientContext context = new ClientContext("https://tenancy.sharepoint.com")) { // Use default authentication mode context.AuthenticationMode = ClientAuthenticationMode.Default; // Specify the credentials for the account that will execute the request context.Credentials = new SharePointOnlineCredentials("User Name", "Password"); }
Guia de Introdução
Os artigos a seguir descrevem como usar um padrão de autenticação de conta de serviço e fornecem exemplos de código para você começar.
-
Criar um aplicativo do SharePoint como um trabalho do temporizador (Blog do MSDN)
- Artigo de ponta a ponta sobre esse padrão.
-
Core.SimpleTimerJob (exemplo PnP do Microsoft 365)
- Artigo de ponta a ponta sobre esse padrão com o vídeo que o acompanha.
-
Core.TimerJobs.Samples (exemplo PnP do Microsoft 365)
- Excelentes exemplos de código abrangendo 10 exemplos diferentes. Observação: nem todos os 10 exemplos de código são aplicáveis ao padrão de autenticação da conta de serviço.
Usar OAuth
Nesse padrão, você define um aplicativo no SharePoint ou no Azure Active Directory e usa os tokens de autenticação associados ao aplicativo para autenticar.
Ao usar um aplicativo do SharePoint para autenticar, você cria uma entidade de aplicativo e atribui permissões a ela.
- Nesse padrão, os trabalhos de timer podem ser implementados por meio de um Suplemento do SharePoint hospedado pelo Provedor ou de um aplicativo de console.
- Para registrar uma entidade de aplicativo para o aplicativo de console ou suplemento do SharePoint hospedado pelo provedor, use a página AppRegNew no SharePoint.
Esta página é acessada na seguinte URL
http://<tenancy>/<site>/_layouts/AppRegNew.aspx- Para conceder permissões a uma entidade de aplicativo, use a página AppInv no SharePoint.
Esta página é acessada na seguinte URL
http://<tenancy>/<site>/_layouts/AppInv.aspxOs trabalhos de timer usam permissões Somente do Aplicativo porque não têm um usuário interativo associado a eles.
O trecho de código a seguir ilustra a obtenção de um token de acesso e o uso de permissões Somente de Aplicativo para autenticar no SharePoint.
string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUri.Authority, realm).AccessToken; using(var clientContext = TokenHelper.GetClientContextWithAccessToken(siteUri.ToString(),accessToken)) { //Implement timer job code }
Ao usar um aplicativo do Azure Active Directory para autenticação, você cria um aplicativo do Azure Active Directory no portal do Azure e atribui permissões a ele.
- Nesse padrão, os trabalhos de timer podem ser implementados por meio de um Suplemento do SharePoint hospedado pelo Provedor ou de um aplicativo de console.
- Nesse padrão, você interage com a Biblioteca de Autenticação do Active Directory ou a API do Graph Microsoft para recuperar um token de acesso.
- O token de acesso é usado para autenticar o SharePoint (e possivelmente outros serviços do Office 365 em uma locação do Office 365).
Guia de Introdução
Os artigos a seguir descrevem o padrão de autenticação OAuth e fornecem exemplos de código para você começar.
-
Criar um aplicativo do SharePoint como um trabalho do temporizador (Blog do MSDN)
- Artigo de ponta a ponta sobre esse padrão.
-
Core.TimerJobs.Samples (exemplo PnP do Microsoft 365)
- Excelentes exemplos de código abrangendo 10 exemplos diferentes. Observação: nem todos os 10 exemplos de código são aplicáveis ao padrão de autenticação OAuth.
Links relacionados
Exemplos de PnP
- Core.SimpleTimerJob (exemplo PnP do Microsoft 365)
- Core.TimerJobs.Samples (exemplo PnP do Microsoft 365)
- Provisioning.Services.SiteManager (exemplo PnP do Microsoft 365)
- Provisioning.SiteCollectionCreation (exemplo PnP do Microsoft 365)
- Exemplos e conteúdo em https://github.com/pnp/PnP
Aplicável a
- Office 365 multilocatário (MT)
- Office 365 dedicado (D) parcialmente
- SharePoint 2013 local, parcialmente
Os padrões para dedicados e locais são idênticos às técnicas de modelo do suplemento do SharePoint, mas há diferenças nas possíveis tecnologias que podem ser usadas.