jueves, 4 de febrero de 2010

MSS 2010: El concepto de Sandbox Solution.

Otra nueva característica de MSS 2010 es el concepto de "Sandbox Solution".

Hasta ahora, todas las soluciones de personalizaciones desarrolladas en Visual Studio con .NET se realizaban mediante librerías .dll, retoques en el web.config y más ficheros en la carpeta /12 (habitualmente los xml de definición del feature o webpart) de nuestros servidores front-end de la granja . A este tipo de desarrollos Microsoft les llama "Farm Solutions" o "Full Trust".

Por supuesto, este tipo de desarrollos sigue existiendo en 2010 (ahora el directorio es /14), pero además se añade una modalidad nueva de desarrollos llamada "Sandboxed solution".

Para comprender bien este concepto hay que considerar que ha sido creado con la finalidad facilitar servicios de Hosting a través de SharePoint (2010 hace mucho incapié en todos los conceptos de "cloud computing"), permitiendo securizar los desarrollos personalizados en entornos de host.

Una Sandbox Solution es un desarrollo que no se implanta con librerías .dll, ni configuraciones del web.config ni ningún fichero físico que deba ser instalado en los servidores WFE. Su implantación se realiza únicamente y directamente en Base de Datos SQL Server.

Con ello se consigue solucionar el problema de código personalizado en entornos de Hosting, facilitando enormemente la tarea de implementación y administración de las soluciones (el administrador ya no ha de aprobar el código y deployarlo). Además, mejora la estabilidad de los servidores al ser un código aislado con un proceso de trabajo que opera en un site collection específico (monitorizable, por supuesto).

 Hasta aquí todo perfecto, seguro que muchos pensais "si es más fácil de implantar, ¿Por qué no lo usamos siempre?". La respuesta es que a cambio de una implantación ágil en entornos host, las Sandboxes tienen muchas limitaciones a nivel de programación:
  • No pueden ejecutar procesos externos (como llamadas a webservices, http o conexiones externas de datos)
  • Están sujetas a limitaciones de quota (este es un tema curioso que trataré en un pos a parte)
  • Están limitados por Code Acces Security (CAS). CAS es un modelo de seguridad que otorga o deniega permisos en función de las propiedades de un assembly.
  • Solo se puede acceder a una parte limitada del Modelo de Objetos (OM) de .NET

La idea principal es securizar al máximo el entorno del servidor (host), a pesar de permitir ejecutar todo tipo código en el cliente.Detallando un poco más estas limitaciones:
  • No puede realizar Off-Box connections, http, webservices, etc.
  • No puede utilizar ADO.net
  • No puede invocar las Características Enterprise de MSS (Búsquedas, BCS, etc.)
  • No puede utilizar threading
  • No puede utilizar P-invoke
  • No puede realizar operaciones de entrada/salida
  • No puede comunicarse con otros sites collections
Como veis, el catálogo de restricciones es bastante considerable, sin embargo, antes de caer en "mi gozo en un pozo", también hay que saber que existen formas de saltarse algunas de ellas. Como comentamos antes, Microsoft quiere securizar el entorno del servidor, pero el del cliente es otro cantar, y con aplicaciones Ajax, Silverlight, JavaScrip... sí que podríamos realizar aplicaciones más completas con acceso a recursos del lado del cliente.

También se puede comunicar una Sandbox mediante un "Full-Trust Proxy"

Las Sandboxes pueden ser activadas o desactivadas como soluciones desde el panel de administración del site collection, y desde el panel de administración central podremos bloquearlas, monitorizarlas o establecer quotas.

Realmente es un concepto interesante que sin duda Microsoft utilizará para vender Hostings de Sharepoint y potenciar su "cloud computing". Veremos hasta que punto se puede utilizar en nuestras intranets...

3 comentarios:

Pau dijo...

Muy interesante este post. Gracias por la explicación.

Saludos

Ignasi Tebé Tena dijo...

Gracias Pau por tu comentario. Es un placer servir a la comunidad.

Anónimo dijo...

Muchas gracias por la aclaracion.
Seras tan amable de indicarme que alternativas de template maneja la plataforma Sharepoint, cual es el nivel de parametrizacion nativa en dicha solucion.-
Muchas gracias y un saludo cordial.-

Christian Alguacil
MCSE 2003