Como consumir lista de SharePoint 2010 en Windows Forms mediante REST

En Microsoft uno de los puntos que se enorgullecen de divulgar es que ahora se soporta REST para acceso a listas y bibliotecas de documentos lo cual me parece fantástico ya que si aporta valor la alternativa de obtener acceso directo al contenido basado en un estándar y que sin tanto esfuerzo de programacion lo podamos lograr es tambien un tema a consiuderar. Este seguro que desde ya podemos ver muchas aplicaciones de esta característica en proyectos de desarrollo SharePoint.

Hagamos una breve y simple demostración de cómo consumir un servicio REST de SharePoint en una aplicacion Windows Forms.

Soporte REST en SharePoint 2010

Primeramente accedemos a nuestro sitio SharePoint 2010 y en la dirección URL hay que capturar “_vtn_bin/listdata.svc” el cual es un servicio WCF que se encarga de exponer el sitio entero en formato REST. Dependiendo del URL de nuestro sitio es el contenido que el servicio listdata.svc nos retorna.

Como puedes ver aquí tenemos en formato REST el contenido del sitio.

clip_image002

Mediante la URL indagamos y accedemos a los sub elementos de este esquema, por ejemplo si quisiéramos acceder a la lista de anuncios “Announcements” entonces modificamos el URL y capturamos subsecuentemente /_vti_bin/listdata.svc/Announcements arrojando lo siguiente:

clip_image004

El navegador lo interpreta y muestra como un Feed RSS sin embargo al ver el código fuente de esta página vemos más contenido de acuerdo a REST. Encontramos un esquema mucho mas explicito que describe y autocontiene la informacion invocada.

clip_image006

Lo único que debes de saber es que la dirección URL es sensible a mayúsculas y minúsculas de tal forma que debes de asegurarte de especificar exactamente igual el nombre de las listas y bibliotecas, no hay margen para el error aquí.

Consumiendo Servicio REST de SharePoint 2010

Debido a que REST opera via protocolo web podemos consumirlo tal como un servicio web. Desde Visual Studio 2010 creamos una aplicación de consola o Windows Forms y tenemos varias alternativas disponibles para generar un proxy que nos invoque los elementos que tenemos publicados por defecto en REST mediante el servicio listdata.svc. En esta demostración de tipo aplicación Windows Forms simplemente selecciono del menú principal la opción de Data en donde se muestra la opción de Visual Studio para agregar una conexión que apunte a diversos orígenes de datos.

clip_image007

Lo que vale la pena ver aquí es que ahora contamos con un nuevo conector hacia SharePoint.

clip_image009

A seleccionar Next simplemente se carga la ventana para hacer una referencia a un servicio WCF. Capturamos la URL de nuestro servicio listdata.svc de nuestro sitio SharePoint en cuestión y damos clic en el botón Go, para que Visual Studio descubra el contenido del servicio “el cual basado en REST obtendremos el contenido de nuestro sitio” y especificamos el namespace con el que estaremos haciendo referencia a nuestro proxy.

clip_image010

Damos clic en Ok y listo ya podemos generar instancias de nuestro proxy y realizar programáticamente invocaciones al contenido de nuestras listas. Cabe mencionar que al hacer la conexión vía Data Source de Visual Studio nos agrega una sección donde podemos arrastrar y soltar sobre nuestra lista de anuncios presentándonos las columnas y la posibilidad de mostrar los objetos sobre nuestro formulario, el proceso de vinculación lo realiza de forma automática y nos agrega el contexto de vinculación y el contexto de navegación dentro de un conjunto de datos.

clip_image011

Si tomamos nuestra lista de anuncios y la arrastramos y soltamos sobre nuestro formulario el resultado será un datagrid con su correspondiente objeto de navegación y contexto de vinculación.

clip_image013

Claro que nosotros podemos editar que columnas queremos incluir y atrapar eventos dentro del datagrid para determinar renglones nuevos o editados y programáticamente hacer algo al respecto.

Ya para terminar necesitamos realizar desde código la invocación a nuestra lista y pasarle como contexto de datos el resultado de nuestro servicio. Así mismo ocupamos también pasar el contexto de usuario para que podamos tener acceso seguro a SharePoint.

Lo que hay que hacer es:

  1. Hacer referencia a nuestro namespace RESTDemo y a System.Net usando using
  2. Instanciamos nuestro servicio generado por el proxy llamado “HomeDataContext” y pasamos como argumento dentro del constructor un objeto Uri apuntando a nuestro servicio listdata.svc.
  3. A nuestro objeto instanciado necesitamos asignarle la credenciales de usuario con las que se autentificara en SharePoint para consumir los datos.
  4. Asignamos a nuestro objeto de contexto de vinculación en su propiedad DataSource el resultado de nuestra lista.
using System.Net;
using WindowsFormsApplication9.RESTDemo;

namespace WindowsFormsApplication9
{
    public partial class Form1 : Form
    {

        private void Form1_Load(object sender, EventArgs e)
        {
            HomeDataContext dc = new HomeDataContext(new Uri("http://sp210-pdc/_vti_bin/listdata.svc"));
            dc.Credentials = CredentialCache.DefaultNetworkCredentials;
            announcementsBindingSource.DataSource = dc.Announcements;
        }
    }
}

El resultado:

image

Originalmente publicado en msmvps.com

MVP Summit 2010

Esta semana tuve la oportunidad de participar en el MVP Summit 2010 en Seattle, WA y la experiencia como siempre enriquecedora en varios sentidos. En primera, un aproximado de 1600 personas de 70 países hizo acto de presencia, la riqueza cultural y técnica es estimulante, la posibilidad de conocer las penas y glorias de nuestros colegas en distintas latitudes nos da una perspectiva interesante que en ocasiones no del todo logramos ver. En segundo lugar, el poder compartir con el equipo de producto y dar retroalimentación sobre las cosas que vamos viendo en el camino con nuestros clientes es una oportunidad que no podemos dejar pasar para exponer nuestras inquietudes y en ese sentido, ahora con la liberación de Visual Studio 2010 RC y SharePoint 2010 Beta tenemos mucha tela de donde cortar. En tercero, compartir con mis colegas expertos en SharePoint también es estimulante ya que compartirnos las mismas preferencias técnicas y definitivamente nos enriquecemos juntos, además de percibir la esencia de cada uno.

Todos y cada uno de los MVPs de Microsoft hemos firmado un acuerdo de no divulgación que nos obliga  a mantener en privado muchas de las cosas que aquí platicamos, por esa razón nos enfocamos a compartir la experiencia de haber participado en el evento.

Originalmente publicado en msmvps.com