SharePoint 2010: Modelo de Objetos en Cliente (I)!

Por si no había quedado claro, SharePoint 2010 está lleno de novedades a todos los niveles: desde la perspectiva puramente funcional, pasando por la extensibilidad mediante desarrollo y la productividad que se logra con las Visual Studio Tools para SharePoint, hasta los cambios a nivel de arquitectura y administración. En la parte de desarrollo hay muchas cosas nuevas, y una de ellas es la disponibilidad de un modelo de objetos (MO) para cliente. Este MO en cliente es un subconjunto del MO definido en Microsoft. SharePoint.dll caracterizado por:

  • Minimizar el # de roundtrips al servidor.
  • Se trata de habilitar el acceso remoto a SharePoint sin tener que recurrir a llamar a los servicios web de SharePoint, teniendo en cuenta que estamos hablando de un subconjunto del MO.
  • Estar limitado al ámbito de Colección de Sitios. El MO en cliente no incluye objetos de administración.

Hay tres posibilidades a la hora de trabajar el MO en cliente:

  • Vía Script que se ejecute en el navegador (JavaScript, aunque más bien es ECMAScript).
  • A través de código .NET ejecutado en modo SandBox.
  • A través de código que se ejecute en una aplicación Silerlight.

Los espacios de nombres son comunes para el caso de código manejado .NET y Silverlight y se encuentran en Microsoft.SharePoint.Client. Estos espacios, son diferentes para el caso de ECMAScript y se encuentran en los archivos SP.js y SP.Core.js

Para probar las prestaciones del MO en cliente, he creado un proyecto de aplicación de consola en el que he añadido las referencias a Microsoft.SharePoint.Client.dll y Microsoft.SharePoint.Client.Runtime.dll (Por lo tanto, este ejemplo sigue la segunda de las posibilidades comentadas para el MO en cliente) que se encuentran en el path:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI

image   image

En el archivo de código del proyecto de aplicación de consola he añadido el siguiente código en el que:

  • En primer lugar, añadimos una directiva using al espacio de nombres del MO en cliente.
  • Creamos una instancia de ClientContext que nos permite conectarnos a un sitio concreto de SharePoint. Este objeto es la clave para trabajar con SharePoint 2010 de forma remota utilizando el MO en cliente.
  • A continuación creamos una instancia de Web que nos va a devolver el sitio web especificado a través de llamar a los métodos Load() y ExecuteQuery() del objeto ClientConext.
  • Lo siguiente que hago es definir una colección de tipo ListCollection (colección de Listas de SharePoint) a partir de la propiedad Lists del objeto contexto de datos.
  • A partir de la definición del objeto ListCollecction puedo definir una colección de listas realizando la correspondiente consulta utilizando para ello el método Include().
  • Para rellenar la colección de listas, volvemos a llamar al método ExecuteQuery() del contexto de datos y listo.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;  

using Microsoft.SharePoint.Client;  

namespace SPClientMO

{

    class Program

    {

        static void Main(string[] args)

        {

            ClientContext ccContext =

                new ClientContext("http://win-lpgjegdoo6f/sites/Intranet/SitioInformatica");

            Web wSite = ccContext.Web;  

            ccContext.Load(wSite);

            ccContext.ExecuteQuery();  

            ListCollection lc = ccContext.Web.Lists;

            IEnumerable<Microsoft.SharePoint.Client.List> lists =

                ccContext.LoadQuery(lc.Include(l => l.Title));

            ccContext.ExecuteQuery();  

            foreach (var l in lists)

            {

                Console.WriteLine(l.Title);

            }  

            Console.ReadLine();

        }

    }

}

La correspondiente salida por pantalla es la que se muestra a continuación:

Client_OM_3

Y hasta aquí llega este primer post sobre el modelo de objetos en cliente en SharePoint 2010.