Share via


Motor de aprovisionamiento PnP y la biblioteca principal

El motor de aprovisionamiento PnP es el núcleo del marco de aprovisionamiento y en su base se encuentra la biblioteca OfficeDevPnP.Core. El motor de aprovisionamiento es parte de la biblioteca principal y aprovecha las extensiones de las biblioteca principales en la implementación de tareas de aprovisionamiento.

Nota:

El marco de aprovisionamiento de PnP & motor de aprovisionamiento de PnP son soluciones de código abierto con una comunidad activa que proporciona soporte técnico para él. No hay ningún contrato de nivel de servicio para el soporte de la herramienta de código abierto de Microsoft.

Consta de los métodos de extensión en el modelo de objetos CSOM/REST de SharePoint, la biblioteca principal permite el aprovisionamiento de tareas como la enumeración y obtención plantillas de aprovisionamiento, así como el almacenamiento y después aplicación de plantillas a los sitios nuevos y existentes. También permite automatizar las tareas de aprovisionamiento e introducir lógica codificada en las rutinas de aprovisionamiento.

Nota:

Para ver un vídeo tutorial sobre cómo crear, guardar y aplicar una plantilla de aprovisionamiento, vaya a Introducción al motor de aprovisionamiento PnP.

Motor de aprovisionamiento PnP

El motor de aprovisionamiento PnP es la implementación estructurada de clases en la biblioteca principal para realizar y automatizar las tareas de aprovisionamiento remotas. En el nuevo entorno de Microsoft que incluye el modelo de complementos de SharePoint, las soluciones de aprovisionamiento de SharePoint Online, SharePoint y Office 365 ahora utilizan el modelo de objetos del lado cliente (CSOM) y el marco de aprovisionamiento para aprovisionar artefactos del sitio.

El motor de aprovisionamiento PnP le permite modelar el diseño de las columnas del sitio, tipos de contenido, definiciones de lista, apariencias compuestas y páginas. Puede diseñar esas características y mucho más señalando a las características de diseño de sitio existentes, diseñando el diseño a mano o mediante una combinación de ambas soluciones. Después puede conservar el diseño como una plantilla de aprovisionamiento que puede guardar y volver a usar.

Puede usar uno de los dos métodos para extraer el diseño del sitio como una plantilla de aprovisionamiento. Usar scripts de Windows PowerShell (PnP.PowerShell) o usar código CSOM/REST que implementa los métodos de extensión proporcionados por la biblioteca principal (OfficeDevPnP.Core).

Usar scripts de Windows PowerShell para extraer una plantilla de aprovisionamiento

Para usar scripts de Windows PowerShell con el motor de aprovisionamiento, primero debe descargar e instalar los cmdlets de PowerShell PnP. Todo lo que necesita para ejecutar Windows PowerShell, incluidas las instrucciones de descarga e instalación, así como la documentación de comandos de Windows PowerShell, está disponible en el repositorio de comandos de PowerShell PnP de GitHub.

Nota:

El repositorio de comandos de PowerShell PnP contiene cuatro versiones: una para SharePoint 2013, una para SharePoint 2016, una para SharePoint 2019 y otra para SharePoint Online.

Nota:

PnP PowerShell es una solución de código abierto con una comunidad activa que ofrece su soporte. No hay ningún contrato de nivel de servicio para el soporte de la herramienta de código abierto de Microsoft.

El método recomendado para instalar el cmdlet es usar la galería de PowerShell:

Install-Module -Name PnP.PowerShell

En caso de que quiera instalar una versión de SharePoint local, sustituya "online" por el nombre por la versión correspondiente de SharePoint.

Estos son los vínculos a las últimas versiones:

Usar código CSOM para extraer una plantilla de aprovisionamiento

Para utilizar código CSOM/REST para extraer una plantilla de aprovisionamiento, solo tiene que crear un proyecto de desarrollo con Visual Studio u otro entorno de desarrollo. Cree cualquier tipo de proyecto, por ejemplo, una consola o una aplicación de Windows, o un complemento de SharePoint. Después de crear un proyecto de desarrollo, instale la biblioteca principal, que está disponible como un paquete NuGet.

Nota:

En el Ejemplo de aplicación de consola de aprovisionamiento hay disponibles instrucciones para buscar e instalar el paquete NuGet de la biblioteca principal y una guía para una aplicación de consola de aprovisionamiento remoto. Tenga en cuenta que la biblioteca principal viene en dos versiones: está destinada a SharePoint Online y otra a SharePoint local.

Aunque hay instrucciones detalladas para usar CSOM en el ejemplo de aplicación de consola de aprovisionamiento, la visión general es:

  1. Crear la conexión a SharePoint Online.

  2. Cree una instancia ClientContext y recuperar una referencia a un objeto Web.

  3. Use el método de extensión de la biblioteca principal, GetProvisioningTemplate, para extraer un objeto ProvisioningTemplate.

  4. Guarde la instancia de plantilla de aprovisionamiento en una ubicación de archivos de su elección mediante un formateador de serialización y un proveedor de plantilla.

Nota:

Puesto que los objetos del formateador de serialización y el proveedor de la plantilla pueden personalizarse, puede implementar el almacenamiento de conservación y el formato de serialización que quiera. Por defecto, el motor de aprovisionamiento PnP proporciona soporte para los proveedores de plantillas de almacenamiento de Azure Blob, SharePoint y sistemas de archivos. También proporciona soporte para formateadores de serialización XML y JSON.

Puede ver un ejemplo del resultado de la serialización XML y obtener más información sobre el esquema de serialización XML en el artículo Esquema de aprovisionamiento PnP. También puede obtener el esquema y la documentación en GitHub: SharePoint/PnP-Provisioning-Schema. El vídeo del Canal 9 Análisis detallado del esquema del motor aprovisionamiento PnP presenta y describe el esquema.

No obstante, es importante tener en cuenta que el motor de aprovisionamiento es compatible con un modelo de dominios independiente del formato de serialización. De hecho, el motor de aprovisionamiento está completamente desacoplado de cualquier formato de serialización. Debe definir manualmente la instancia ProvisioningTemplate.

Apunte a un sitio de modelo o redacte un documento XML que se valide con el esquema de aprovisionamiento PnP, o bien, escriba el código .NET y cree la jerarquía de objetos. Puede incluso realizar una combinación de estos métodos. También puede diseñar la plantilla de aprovisionamiento mediante un modelo de sitio, guardarla como un archivo XML y realizar algunas personalizaciones en memoria, mientras maneja la instancia ProvisioningTemplate del código.

Código de ejemplo para extraer una plantilla con GetProvisioningTemplate

El ejemplo de aplicación de consola de aprovisionamiento muestra el uso del método GetProvisioningTemplate. En el ejemplo, el proceso de exportación de la plantilla de aprovisionamiento tiene lugar en el bloque de código siguiente.

ProvisioningTemplateCreationInformation ptci = new ProvisioningTemplateCreationInformation(ctx.Web);

// Create FileSystemConnector, so that we can store composed files somewhere temporarily 
ptci.FileConnector = new FileSystemConnector(@"c:\temp\pnpprovisioningdemo", "");
ptci.PersistComposedLookFiles = true;
ptci.ProgressDelegate = delegate (String message, Int32 progress, Int32 total)
{

// Use this to simply output progress to the console application UI
Console.WriteLine("{0:00}/{1:00} - {2}", progress, total, message);
};

// Execute actual extraction of the tepmplate
ProvisioningTemplate template = ctx.Web.GetProvisioningTemplate(ptci);

Aplicar una plantilla de aprovisionamiento

Si se aplica la plantilla de aprovisionamiento mediante los métodos de extensión de la biblioteca principal, tiene un bloque de código similar a este ejemplo. En el ejemplo, la plantilla se aplica en el sitio de destino con el método de extensión ApplyProvisioningTemplate del tipo Web.

using (var context = new ClientContext(destinationUrl))
{
  context.Credentials = new SharePointOnlineCredentials(userName, password);
  Web web = context.Web;
  context.Load(web, w => w.Title);
  context.ExecuteQueryRetry();

  // Configure the XML file system provider
  XMLTemplateProvider provider =
  new XMLFileSystemTemplateProvider(
    String.Format(@"{0}\..\..\",
    AppDomain.CurrentDomain.BaseDirectory),
    "");

  // Load the template from the XML stored copy
  ProvisioningTemplate template = provider.GetTemplate(
    "<template name>.xml");

  // Apply the template to another site
  Console.WriteLine("Start: {0:hh.mm.ss}", DateTime.Now);

  // We can also use Apply-PnPProvisioningTemplate
  web.ApplyProvisioningTemplate(template);

  Console.WriteLine("End: {0:hh.mm.ss}", DateTime.Now);
}

Biblioteca principal de PnP

La biblioteca principal (OfficeDevPnP.Core) es un modelo de objetos CSOM/REST que es compatible con el marco de aprovisionamiento PnP y habilita el motor de aprovisionamiento PnP. Se compone de varios espacios de nombres, incluyendo un conjunto de métodos de extensión. Estos métodos amplían el modelo de objetos de SharePoint para admitir el aprovisionamiento remoto, así como los objetos de control de entidades, trabajos de temporizador, plantillas de aprovisionamiento y la totalidad del marco de aprovisionamiento. Tabla 1 enumera los espacios de nombres en la biblioteca principal.


Tabla 1. Espacios de nombres en la biblioteca OfficeDevPnP.Core

Espacio de nombres Descripción
OfficeDevPnP.Core
OfficeDevPnP.Core.AppModelExtensions Clases .NET que amplían un tipo existente con métodos adicionales.
OfficeDevPnP.Core.Entities Clases que se usan para proporcionar y recuperar objetos más complejos de los métodos de extensión de AppModelExtensions.
OfficeDevPnP.Core.Enums Un conjunto de enumeraciones que admiten operaciones de aprovisionamiento.
OfficeDevPnP.Core.Extensions Métodos de extensión que no están relacionados con SharePoint, como métodos para ayudar con la manipulación de cadenas.
OfficeDevPnP.Core.Framework.ObjectHandlers.TokenDefinitions Símbolos que se usan para reemplazar el contenido específico del sitio en el objeto de plantilla.
OfficeDevPnP.Core.Framework.Provisioning.Connectors Los conectores se utilizan para conectar los distintos orígenes de datos donde se almacenan las plantillas y recursos.
OfficeDevPnP.Core.Framework.Provisioning.Extensibility Código proveedor de extensibilidad. Los proveedores de extensibilidad pueden usarse para agregar funcionalidad que no es compatible de forma nativa con el motor.
OfficeDevPnP.Core.Framework.Provisioning.Model Objetos de modelo de datos de plantilla. Las plantillas se extraen o se deserializan a código C#. Este espacio de nombres contiene clases para esta estructura.
OfficeDevPnP.Core.Framework.Provisioning.ObjectHandlers Controladores para diferentes elementos de SharePoint que admiten tanto la creación como la extracción de plantillas.
OfficeDevPnP.Core.Framework.Provisioning.Providers Espacio de nombres para la base del proveedor de plantillas. Los proveedores de plantillas se usan para serializar o deserializar modelos basados en código a un formato específico.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Json Proveedor de plantilla JSON para serializar o deserializar plantillas basadas en código desde formato JSON o a formato JSON.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml Proveedor de plantilla XML para serializar o deserializar plantillas basadas en código desde formato XML o a formato XML.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml.V201503 Archivos de esquema generados automáticamente para la versión v201503 del esquema.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml.V201505 Archivos de esquema generados automáticamente para la versión v201505 del esquema.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml.V201508 Archivos de esquema generados automáticamente para la versión v201508 del esquema.

Vea también