Soluciones SandBoxed en SharePoint 2010

Para todos los que hemos desarrollado WebParts o cualquier otra funcionalidad anexa a SharePoint mediante su SDK, sabemos que uno de los grandes dolores de cabeza que sufrimos no es al momento de desarrollar una nueva solución sino al momento de pasarla a un ambiente de producción.

Todo esto debido a que nuestros grandes “amigos” del área de IT, quieren asegurarse que todo lo que estamos pasando al ambiente de producción no afectará ni a los servidores ni a la aplicación SharePoint que diariamente brinda servicios a nuestros clientes.

Una de las frase que siempre menciono en los eventos que doy presentando novedades de SharePoint 2010 es: “SharePoint 2010 en esta ocasión también nos trae bondades a los desarrolladores”, lo cual no es algo alejado de la verdad como veremos a continuación.

SharePoint 2010, nos brinda una gran aspirina para aliviar nuestro dolor de cabeza producido por el área de IT al proveernos un ambiente controlado de ejecución para nuestras soluciones llamado “SandBoxed” o “Caja de Arena” si lo queremos decir en español. Lo que nos proporciona las soluciones SandBoxed es una galería de documentos especializada la cual nos permite subir todas nuestras soluciones WSP el cual se ejecutará utilizando un pequeño subconjunto de objetos del namespace Microsoft.SharePoint, lo más importante es que si por desgracia nuestra funcionalidad desarrollada llegase a fallar no afectará a la granja de servidores.

Adicionalmente entrega a las personas de IT herramientas para poder monitorear y validar las soluciones que han sido subidas a esta galería especial, dentro de las características que pueden monitorear encontramos:

  • Tiempo de ejecución de la CPU

  • Consumo de memoria

  • Tiempo de consulta a la base de datos

  • Terminaciones anormales

  • Excepciones críticas

  • Excepciones sin manejador

Bueno después de tanta maravilla, vamos a crear un nuevo proyecto con nuestro Visual Studio 2010 en el cual seleccionaremos la plantilla “Empty SharePoint Project”. A lo que nos aparecerá un dialogo en el cual nosotros deberemos ingresar la URL de nuestro sitio SharePoint, además nos dará la posibilidad de seleccionar si haremos deploy de nuestra solución como “SandBoxed” o “Farm” solution, a lo cual nosotros seleccionaremos “SandBoxed”.

1

Luego en nuestro Solution Explorer, agregamos un nuevo item al proyecto que nos encontramos desarrollando y seleccionamos la opción de “Web Part” al cual llamaremos “SandBoxed”.

2

Lo que nos encontramos ahora, ya es territorio conocido para todos los que desarrollamos Web Parts para SharePoint 2007 en donde teníamos que desarrollar todo el Web Part en vista de código, incluyendo el diseño gráfico de la solución. Esto claramente presenta un gran paso atrás luego de que ahora tenemos la capacidad de desarrollar Visual Web Parts sin embargo, gracias a que Visual Studio 2010 presenta la capacidad de ir agregando extensiones podemos descargar una que cubra esta falencia. Existe una extensión desarrollada por Mike Morton de Microsoft llamada Visual Studio 2010 SharePoint Power Tools, la cual les recomiendo que le echen un vistazo Guiño.

Volviendo al artículo, escribiremos el siguiente bloque de código el cual nos indicará cuantas listas existen en nuestro sitio SharePoint e imprimirá los resultados en un Label.

 protected override void CreateChildControls()
{
  Label lblCantidad = new Label();
  lblCantidad.Text = String.Format("Existen {0} listas", 
                                       SPContext.Current.Web.Lists.Count);
  Controls.Add(lblCantidad);
}   

Luego presionamos el botón derecho del mouse sobre el proyecto que estamos desarrollando y seleccionamos la opción Package, la cual generará nuestro archivo WSP el cual será subido a la galería de soluciones SandBoxed. Para llegar a esta galería iremos a nuestro sitio SharePoint seleccionaremos “Acciones del Sitio” y finalmente “Configuración del Sitio”, luego en la agrupación “Galerías” encontraremos una llamada “Soluciones”.

3

Al ingresar deberemos ver la siguiente interfaz, en la cual presionaremos en el botón “Cargar Solución” que se encuentra en la Ribbon.

4

Al momento de cargar nuestra solución, nos aparecerá un dialogo informándonos que para que nuestra solución pueda estar visible para los usuarios del sitio debemos activarla, lo cual es lo que nosotros queremos.

5

Una vez hecho esto regresamos a la raíz de nuestro sitio, editamos la página y agregamos la solución en mención, la cual puede realizar mediante la interfaz de Ribbon que vemos en la siguiente imagen.

6

Después veremos lo siguiente en nuestra página:

7

Ahora bien, ¿como depuramos nuestra solución?. Simple, volvemos a nuestro Visual Studio 2010, seleccionamos “Debug” => “Attach To Process” y finalmente lo asociamos al proceso “SPUCWorkerProcess.exe” el cual es el encargado de ejecutar nuestras soluciones SandBoxed.

8

Luego al poner un punto de quiebre en cualquier parte de nuestro código fuente y refrescar la página veremos como podemos depurar nuestra solución.

9

Como pudimos ver a lo largo de este artículo, las soluciones SandBoxed nos proveen una manera muy sencilla y segura de poder hacer deploy de nuestras soluciones en aplicaciones criticas o con ambientes restrictivos. Proveyendo la capacidad de poder monitorear nuestras soluciones y no impactar a los usuarios de nuestros sitios.

Espero que la información que les compartí sea de su utilidad, hasta la próxima!