Desde hace cerca ya de dos años, un grupo de Patterns and Practices de Microsoft, liderado por Vesa Juvonen (http://blogs.msdn.com/b/vesku), inicio el programa Office 365 Dev PnP, con la idea principal de ayudar a los clientes a transformar y realizar la transición del modelo Soluciones Full Trust de SharePoint, al modelo de AddIns, tratando de establecer unas guías y buenas prácticas para hacer ese paso.´
Componentes del programa PnP
El Office 365 Dev PnP se liberó en GitHub, y poco tiempo después se dividió en distintos repositorios. Estos son algunos de los componentes principales:
Ejemplos interesantes
El siguiente listado contiene algunos de los ejemplos más interesantes que podemos encontrar en el PnP, si bien es muy recomendable revisar todos los ejemplos.
Extensiones y utilidades con CSOM
Algunas de las clases y métodos que extienden CSOM:
Provisioning Framework
Probablemente sea la estrella del PnP. Este framework pretende sustituir el antiguo modelo de despliegue de soluciones SharePoint basadas en soluciones WSP y hacerlo basado en un modelo remoto, usando CSOM, y un esquema XML propio para la definición de Columnas, Listas, Paginas, etc.
Como hemos mencionado anteriormente, el esquema XML está definido en el proyecto PnP-Provisioning-Schemay estos son los nodos principales:
Y la definición de una Plantilla se compone de:
La definición completa del esquema la podéis encontrar en:
https://github.com/OfficeDev/PnP-Provisioning-Schema/blob/master/ProvisioningSchema-2015-12.md
Nota: Es importante saber que no todos los nodos del Esquema son posteriormente soportados por el framework de provisioning. Por ejemplo, el Nodo Sequence permite definir SiteCollections (Colecciones de Sitios) y Sites (Sitios) dentro de él, por lo que sería lógico pensar que el framework permite crear Colecciones de Sitio y Sitios, sin embargo, por desgracia, esto es algo que (todavía) no está soportado por el framework.
Un sencillo, pero completo ejemplo de XML lo tenemos en:
Y el siguiente código C# provisionaría el XML sobre un sitio existente:
XMLFileSystemTemplateProvider provider = |
---|
``new XMLFileSystemTemplateProvider(``@"c:\temp\pnpprovisioningdemo"``,``""``); |
---|
string templateName =``"template.xml"``; |
---|
ctx.Web.ApplyProvisioningTemplate(template); |
---|
Lo bueno es que el framework también permite crear el XML desde un sitio ya existente (no se exporta absolutamente todo, por ejemplo, no se exportan todas las paginas existentes). Para exportar un sitio y guardar el XML generado, podemos utilizar el siguiente código:
XMLFileSystemTemplateProvider provider =``new XMLFileSystemTemplateProvider(``@"c:\temp\pnpprovisioningdemo"``,``""``); |
---|
string templateName =``"template.xml"``; |
---|
provider.SaveAs(template, templateName); |
---|
También podemos exportar un sitio como Template, o aplicar una plantilla XML desde PowerShell, con los comandos:
Seguimiento del programa PnP
Además de los proyectos de GitHub, el equipo de PnP sigue liberando continuamente material muy interesante sobre el desarrollo para Office 365:
Luis Mañez
SharePoint / Cloud Solutions Architect en ClearPeople LTD @luismanez http://geeks.ms/lmanez/