Compartir a través de


Trabajos de temporizador remoto en el modelo de complementos de SharePoint

El método usado para implementar trabajos de temporizador es distinto en el nuevo modelo de complementos de SharePoint, en comparación con el código de plena confianza. En un escenario típico de solución de granja de servidores/código de plena confianza (FTC), los trabajos de temporizador de SharePoint se creaban con el código del modelo de objetos del lado servidor de SharePoint, se implementaban con soluciones de granja de servidores y se administraban en el sitio web de Administración central de SharePoint. En este escenario, SharePoint controla tanto la programación como la ejecución del trabajo del temporizador.

En el escenario de modelo de complementos de SharePoint, los trabajos de temporizador se crean y se programan fuera de SharePoint. En este escenario, SharePoint no se encarga ni de la programación ni de la ejecución del trabajo del temporizador.

Directrices importantes

Como regla general, nos gustaría proporcionar las siguientes directrices avanzadas para crear trabajos de temporizador.

  • Los trabajos del temporizador deben implementarse fuera de SharePoint.
  • La programación de los trabajos del temporizador debe implementarse fuera de SharePoint.
  • Los trabajos del temporizador deben autenticarse a través de una cuenta de servicio u OAuth.

Desafíos en la creación de trabajos de temporizador

El mayor desafío asociado con la creación de trabajos de temporizador en el espacio empresarial de Office 365 es el hecho de que no se pueden implementar soluciones con ámbito de granja de servidores para un espacio empresarial de Office 365. Sin una solución con ámbito de granja de servidores, no se puede implementar un trabajo de temporizador de SharePoint.

La nueva forma de crear un trabajo de temporizador es crearlo fuera de SharePoint y administrar la programación fuera también. Tenga en cuenta los siguientes factores asociados con trabajos de temporizador de SharePoint en un entorno local de SharePoint.

  • SharePoint cuenta con cientos de trabajos de temporizador prediseñados; por ello, el programador de SharePoint debe hacer un gran esfuerzo para poder mantenerse al día. Es cierto que puede reducir la cantidad de memoria y la energía necesarias para el procesador en el servidor de SharePoint si mueve el código de implementación a Azure o algún otro entorno.
  • Al mover la programación y el código de implementación asociados a trabajos de temporizador a otro servidor, consigue que el servidor de SharePoint sea más estable y escalable.

Opciones para programar trabajos de temporizador

Tiene varias opciones para implementar la programación de un trabajo de temporizador.

  • Windows Scheduler
    • Servicio de Windows
  • Azure WebJob
    • Proceso de trabajo de Azure

Windows Scheduler

En este modelo, el programador de Windows controla los aspectos de programación asociados con un trabajo del temporizador. El código de implementación puede ser una aplicación de consola o un script de PowerShell o cualquier otro código que pueda invocar el programador de Windows.

Opción Sub servicio de Windows

Un servicio de Windows tiene las mismas características que el Programador de Windows. Microsoft no recomienda este patrón, pero cabe mencionarlo porque se usa habitualmente.

¿Cuándo es Windows Scheduler la opción adecuada?

Si no tiene acceso a una suscripción de Azure para programar trabajos de temporizador con Azure WebJobs, Windows Scheduler es una buena opción porque se puede implementar en cualquier equipo con el sistema operativo Windows.

  • Requiere hardware adicional para ejecutar el programador de Windows.
  • Requiere hardware adicional para ejecutar el código de trabajo de temporizador.

Introducción

En los artículos siguientes se utiliza el modelo de Windows Scheduler y se proporcionan ejemplos de código para empezar.

Azure WebJob

En este modelo, Azure WebJob controla los aspectos de programación asociados con el trabajo del temporizador e incluye el código de implementación.

  • No requiere hardware adicional para ejecutar Azure WebJob (programación y código de implementación).
  • Es útil ya que utiliza Azure WebJob para programar, así como el código de implementación que facilita la administración en una ubicación.

Subocurador de rol de trabajo de Azure

Un rol de trabajo de Azure tiene las mismas características que un trabajo web de Azure. Microsoft no recomienda este patrón, pero cabe mencionarlo porque se usa habitualmente.

¿Cuándo es Azure WebJob la opción adecuada?

Cuando tiene acceso a una suscripción de Azure para programar trabajos de temporizador con Azure WebJobs.

Introducción

En los artículos siguientes se describe el modelo de Azure WebJob y se proporcionan ejemplos de código para empezar.

Opciones de autenticación

Para que los trabajos de temporizador puedan interactuar con SharePoint, estos deben autenticarse. Actualmente, hay dos modelos que puede usar para autenticar trabajos de temporizador.

  • Usar una cuenta de servicio
  • Usar OAuth

Usar una cuenta de servicio

En este modelo, se definen una o más cuentas de servicio que se usan para autenticar trabajos de temporizador.

  • Las cuentas de servicio se definen en SharePoint.

    • En un espacio empresarial de Office 365, según qué funciones tengan los trabajos de temporizador, es posible que las cuentas de servicio necesiten tener asignada una licencia de Office 365.
    • Puede crear cuentas de servicio por cada trabajo de temporizador o usar una única cuenta para todos los trabajos de temporizador.
    • Deles nombres claros y descriptivos a las cuentas de servicio para poder controlar fácilmente las operaciones que realizan.

    Por ejemplo, si el trabajo del temporizador modifica los elementos de una lista, la columna Modificado por para los elementos de la lista mostrará el nombre de la cuenta de servicio asociada con el trabajo del temporizador.

  • Cuando se autentique con cuentas de servicio, deberá recuperar un nombre de usuario y contraseña de la cuenta de servicio.

    • El fragmento de código siguiente muestra cómo utilizar un nombre de usuario y contraseña para autenticarse.

    • Asegúrese de guardar y recuperar el nombre de usuario y la contraseña 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");
      }
      

Introducción

En los artículos siguientes se describe cómo usar la autenticación con una cuenta de servicio y se proporcionan ejemplos de código para empezar.

Usar OAuth

En este modelo, se define una aplicación de SharePoint o de Azure Active Directory y se utilizan los tokens de autenticación asociados con la aplicación para autenticar.

  • Al usar una aplicación de SharePoint para autenticar, se crea una entidad de seguridad de la aplicación y se le asignan permisos.

    • En este modelo, los trabajos de temporizador pueden implementarse mediante un complemento de SharePoint hospedado por el proveedor o una aplicación de consola.
    • Para registrar una entidad de seguridad de la aplicación para el complemento de SharePoint hospedado por el proveedor o la aplicación de consola, use la página AppRegNew en SharePoint.

    Se accede a esta página en la siguiente dirección URL. http://<tenancy>/<site>/_layouts/AppRegNew.aspx

    • Para conceder permisos a una entidad de seguridad de la aplicación, use la página AppInv en SharePoint.

    Se accede a esta página en la siguiente dirección URL. http://<tenancy>/<site>/_layouts/AppInv.aspx

  • Los trabajos de temporizador usan permisos solo para de aplicación porque no tienen un usuario interactivo asociado con ellos.

    • El fragmento de código siguiente ilustra cómo se obtiene un token de acceso y cómo se usan los permisos solo para aplicación para autenticar SharePoint.

      string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUri.Authority, realm).AccessToken;
      
      using(var clientContext = TokenHelper.GetClientContextWithAccessToken(siteUri.ToString(),accessToken))
      {
        //Implement timer job code
      }
      
  • Al usar una aplicación de Azure Active Directory para autenticar, se crea una aplicación de Azure Active Directory en Azure Portal y se le asignan permisos.

    • En este modelo, los trabajos de temporizador pueden implementarse mediante un complemento de SharePoint hospedado por el proveedor o una aplicación de consola.
    • En este modelo, se interactúa con la Biblioteca de autenticación de Active Directory o la API de Microsoft Graph para recuperar un token de acceso.
    • El token de acceso se usa para autenticar SharePoint (y, posiblemente, otros servicios de Office 365 en un espacio empresarial de Office 365).

Introducción

En los artículos siguientes se describe el modelo de autenticación de OAUth y se proporcionan ejemplos de código para empezar.

Ejemplos de PnP

Se aplica a

  • Office 365 multiempresa (MT)
  • Office 365 dedicado (D) parcial
  • SharePoint 2013 local parcial

Los modelos para Office 365 dedicado y local son idénticos a las técnicas del modelo de complemento de SharePoint, pero existen algunas diferencias en las posibles tecnologías que se pueden usar.