Compartilhar via


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.

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.

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.

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.

Exemplos de 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.