SharePoint 2010: Validadores de soluciones SandBox (I)!

Como ya se ha comentado en este blog en varios artículos, SharePoint 2010 permite desplegar un nuevo tipo de soluciones conocidas como “Sandbox” cuyo ámbito de actuación se reduce al de la colección de sitios lo que en la práctica indica que son soluciones que se ejecutan de forma segura de manera que si generan algún problema, no van a afectar a otras colecciones de sitios y tampoco a la granja. Antes de pasar al tema de este post, os recuerdo los artículos ya publicados sobre soluciones SandBox:

Como sabéis, las soluciones Sandbox se cargan en una galería especial existente a nivel de colección de sitios: la galería de soluciones. Una vez cargada una solución, puede ser activada para poder utilizarla en el ámbito de la colección de sitios en cuestión…y aquí debería surgir una primera pregunta: ¿se pueden validar de alguna forma las soluciones Sandbox de forma que sin no cumplen ciertos requisitos no se activen y no se puedan usar? La respuesta es que sí gracias a que podemos instalar validadores de soluciones que nos permiten realizar comprobaciones adicionales sobre las soluciones Sandbox que se están desplegando. El funcionamiento resumido de estos validadores es el siguiente:

  • Cuando se intenta activar una solución en la galería de soluciones, el validador desplegado entra en funcionamiento.
  • Este validador realiza una serie de comprobaciones sobre la solución y puede bloquearla en el caso en qué se estén incumpliendo las reglas de validación definidas.

Por defecto, SharePoint 2010 incorpora un validador que simplemente marca como correcta cualquier solución que se cargue en la galería de soluciones. Si queremos conocer los validadores desplegados en una cierta colección de sitios, basta con ejecutar el siguiente script PowerShell:

   1: $snapin = Get-PSSnapin | Where-Object {$_.Name -eq "Microsoft.SharePoint.Powershell"}

   2: if ($snapin -eq $null) {

   3:   Write-Host "Loading SharePoint Powershell Snapin" -foregroundcolor red

   4:   Add-PSSnapin Microsoft.SharePoint.Powershell

   5: }

   6: if ($snapin -ne $null) {

   7:   Write-Host "SharePoint Powershell Snapin already loaded" -foregroundcolor red

   8: }

   9:  

  10: Write-Host "Getting reference to user code service..." -foregroundcolor red

  11: $usercode = [Microsoft.SharePoint.Administration.SPUserCodeService]::Local

  12: $usercode.SolutionValidators

¿Podemos crear nuestros propios validadores de soluciones? La respuesta es que sí, y el proceso es el siguiente:

  • Crear una clase que herede de SPSolutionValidator.
  • Incluir en la clase los métodos:
    • ValidateSolution, que valida el WSP de la solución SandBox y su contenido.
    • ValidateAssembly, que valida cada ensamblado contenido en el WSP.
  • Ambos métodos permiten fijar un mensaje de error y redireccionar a una página de error personalizada en el caso en el que el proceso de validación de una solución falle.
  • Registrar el validador en la granja de SharePoint, lo cuál podemos hacer de forma sencilla mediante un manejador de eventos asociado a una característica que nos permita añadir el validador a la colección de validadores del servicio de código de usuario (propiedad SolutionValidators del objeto SPUserCodeService).

Y hasta aquí llega este primer post de validadores de soluciones.

Office 365: Resumen de posts (I)!

Cada vez queda menos para que la plataforma de productividad de Microsoft en la nube vea la luz. En este sentido, y como preveo publicar más posts al respecto, doy comienzo con este post a una serie en la que cada cierto tiempo haré un resumen de los posts publicados en torno a Office 365 en este blog. De momento, los posts publicados son los siguientes:

Capacidades

Desarrollo

IT

Recursos

Otros