Trabalhos do temporizador remotos no modelo de suplemento do SharePoint
A abordagem que você adota para implementar trabalhos de temporizador é diferente no novo modelo de Suplemento do SharePoint do que no Código de Confiança Total. Em um cenário típico de FTC (Código de Confiança Total) /Farm Solution, os Trabalhos de Temporizador do SharePoint foram criados com o código modelo de objeto lateral do SharePoint Server, implantado por meio de Farm Solutions e gerenciados no site da Administração Central do SharePoint. O SharePoint manipula o agendamento e a execução do trabalho de temporizador nesse cenário.
No cenário de modelo de suplemento do SharePoint, os trabalhos de temporizador são criados e agendados fora do SharePoint. O SharePoint não é responsável pelo agendamento ou pela execução do trabalho de temporizador neste cenário.
Diretrizes de alto nível
Como regra geral, gostaríamos de fornecer as diretrizes de alto nível a seguir para criar trabalhos de temporizador.
- 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 de criação de trabalhos de temporizador
O maior desafio associado à criação de trabalhos de temporizador em locatários Office 365 é o fato de que você não pode implantar soluções com escopo de farm em um Office 365 locação. Sem uma solução com escopo de farm, você não pode implantar um trabalho de temporizador do SharePoint.
A nova maneira de criar um trabalho de temporizador é construí-lo fora do SharePoint e lidar com o agendamento fora do SharePoint também. Considere os seguintes fatores associados aos trabalhos de temporizador do SharePoint para um ambiente local do SharePoint.
- O SharePoint é fornecido com centenas de trabalhos de temporizador fora da caixa que o agendador do SharePoint luta para acompanhar. ok- 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 temporizador para outro servidor torna o servidor do SharePoint mais escalonável e estável como resultado.
Opções para agendar trabalhos de temporizador
Você tem algumas opções para implementar o agendamento para um trabalho de temporizador.
- 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.
Opção Sub do Serviço Windows
Um Serviço Windows tem as mesmas características que o Agendador do Windows. A Microsoft não recomenda esse padrão, mas vale a pena mencionar porque ele é comumente usado.
Quando o Agendador do Windows é um bom ajuste?
Quando você não tem acesso a uma assinatura do Azure para agendar trabalhos de temporizador com o Azure WebJobs, usar um Agendador do Windows é uma boa opção porque 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 temporizador.
Guia de Introdução
Os artigos a seguir usam o padrão agendador do Windows e fornecem exemplos de código para você começar.
- Core.SimpleTimerJob (exemplo de PnP do O365)
- Artigo de ponta a ponta sobre esse padrão com o vídeo que acompanha.
- Core.TimerJobs.Samples (Exemplo de PnP O365)
- Excelentes exemplos de código que abrangem 10 exemplos diferentes. Observação: nem todos os dez exemplos de código são aplicáveis ao padrão 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 Azure WebJob (código de implementação e agendamento).
- É 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.
Opção Sub de Função de Trabalho do Azure
Uma Função de Trabalho do Azure tem as mesmas características de um WebJob do Azure. A Microsoft não recomenda esse padrão, mas vale a pena mencionar porque ele é comumente usado.
Quando o Azure WebJob é um bom ajuste?
Quando você tem acesso a uma assinatura do Azure para agendar trabalhos de temporizador com o Azure WebJobs.
Introdução
Os artigos a seguir descrevem o padrão WebJob 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 Office 365 ou local do SharePoint. Inclui informações de publicação e monitoramento.
- Core.SimpleTimerJob (exemplo de PnP do O365)
- Excelentes exemplos de código que abrangem 10 exemplos diferentes. Observação: nem todos os dez exemplos de código são aplicáveis ao padrão WebJob do Azure.
Opções de autenticação
Para que seus trabalhos de temporizador interajam com o SharePoint, eles devem se autenticar. Atualmente, há dois padrões que você pode usar para autenticar trabalhos de temporizador.
- Usar uma conta de serviço
- Usar o OAuth
Usar uma conta de serviço
Nesse padrão, você define uma ou mais contas de serviço usadas para autenticar trabalhos de temporizador.
Contas de serviço são definidas no SharePoint.
- Em um Office 365 locação, dependendo da funcionalidade que seus trabalhos de temporizador têm, as contas de serviço podem precisar de uma licença Office 365 atribuída a elas.
- Você pode criar contas de serviço por trabalho de temporizador ou usar uma única conta para todos os trabalhos de temporizador.
- 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 seu trabalho de temporizador 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 temporizador.
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 do código abaixo ilustra o uso de um nome de usuário e senha para autenticar.
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"); }
Introdução
Os artigos a seguir descrevem como usar um padrão de autenticação de conta de serviço e fornecer 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 de PnP do O365)
- Artigo de ponta a ponta sobre esse padrão com o vídeo que acompanha.
- Core.TimerJobs.Samples (Exemplo de PnP O365)
- Excelentes exemplos de código que abrangem 10 exemplos diferentes. Observação: nem todos os dez exemplos de código são aplicáveis ao padrão de autenticação da conta de serviço.
Usar o 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 autenticação.
Ao usar um aplicativo do SharePoint para autenticar, você cria uma entidade de aplicativo e atribui permissões a ele.
- Nesse padrão, os trabalhos de temporizador 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 suplemento ou console do SharePoint hospedado pelo provedor, use a página AppRegNew no SharePoint.
Esta página é acessada na URL a seguir
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 URL a seguir
http://<tenancy>/<site>/_layouts/AppInv.aspx
Trabalhos de temporizador usam permissões somente de aplicativo porque não têm um usuário interativo associado a elas.
O snippet de código abaixo ilustra a obtenção de um token de acesso e o uso de permissões somente de aplicativo para se 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 autenticar, você cria um aplicativo do Azure Active Directory no portal do Azure e atribui permissões a ele.
- Nesse padrão, os trabalhos de temporizador 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 com a Microsoft API do Graph para recuperar um token de acesso.
- O token de acesso é usado para autenticar o SharePoint (e possivelmente outros serviços de Office 365 em um Office 365 locação).
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 de PnP O365)
- Excelentes exemplos de código que abrangem 10 exemplos diferentes. Observação: nem todos os dez exemplos de código são aplicáveis ao padrão de autenticação OAUth.
Links relacionados
- Recursos do Azure WebJob (Documentação do Azure)
- Implantar WebJobs usando o Visual Studio (Documentação do Azure)
- Artigos de diretrizes em https://aka.ms/OfficeDevPnPGuidance
- Referências no MSDN em https://aka.ms/OfficeDevPnPMSDN
- Vídeos em https://aka.ms/OfficeDevPnPVideos
Exemplos de PnP
- Core.SimpleTimerJob (exemplo de PnP do O365)
- Core.TimerJobs.Samples (Exemplo de PnP O365)
- Provisioning.Services.SiteManager (Exemplo de PnP O365)
- Provisioning.SiteCollectionCreation (amostra O365 PnP)
- Exemplos e conteúdo em https://github.com/SharePoint/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.