C&B207
Mejorando la interfaz de SharePoint
2010 con Silverlight 4
Guillermo Bas - Javier Yagüe
SharePoint Developer - DPS
MCTS y MCPD en SharePoint 2010
gbas@solid.com – jyague@solidq.com
Objetivos de la sesión
Desarrollando aplicaciones Silverlight para SharePoint 2010

α Identificar cómo puede ayudarnos Silverlight a mejorar la
   interfaz de SharePoint 2010

α Identificar el mejor método de despliegue en cada
   proyecto

α Comprender cómo funciona el acceso a datos desde
   Silverlight
En capítulos anteriores…

  Silverlight y SharePoint 2007

  α Requería modificar Web.Config

  α Despliegue más complejo

  α Solo posible a través de HTML
Ahora

 Silverlight y SharePoint 2010
  α Soportado de serie

  α Silverlight WebPart (Solo
    necesita la ruta del .xap)

  α Posibilidad de crear nuestra
    propia WebPart personalizada

  α Despliegue muy sencillo
Interacción mejorada
Desarrollando nuestra aplicación
Ubicaciones para el .xap


          Sistema físico               Sistema virtual
         Carpeta Layouts          Biblioteca de documentos

     Carpeta Layouts/ClientBin   En la raíz o en una subcarpeta
                                   bajo el sitio de SharePoint
                                            (Designer)
Métodos de despliegue

  αSubir el .xap a una biblioteca de documentos


  αEmpaquetar el .xap en un WSP para su despliegue
   β Módulo
   β Directorio mapeado


  αWebPart personalizado de Silverlight (ej. Media
   WebPart)
Métodos de despliegue
API de Silverlight para SP2010

  ¿Cómo funciona?

  α Encapsulando los Servicios Web WCF de SharePoint
   2010

  ¿Qué nos proporciona?

  α Una capa de abstracción fácil de utilizar

  α Integración del modelo de objetos SharePoint con
    aplicaciones que se ejecutan en el cliente
API de Silverlight para SP2010
  Ensamblados (Referencias necesarias)
  α Microsoft.SharePoint.Client.Silverlight.dll (265 KB)

  α Microsoft.SharePoint.Client.Silverlight.Runtime.dll (141 KB)

  Ubicación
  α 14TEMPLATELAYOUTSClientBin

  Espacio de nombres
    Using Microsoft.SharePoint.Client;
Elementos principales

  α El contexto remoto (ClientContext)

    ClientContext ctx;
    if (ClientContext.Current == null)
    {
           ctx = new ClientContext("http://mysite");
    }
    else
    {
           ctx = ClientContext.Current;
    }
Elementos principales

  α Cola de consultas (Load)
  List listaNoticias =
  ctx.Web.Lists.GetByTitle("Noticias");
  itemsNoticias =
  listaNoticias.GetItems(CamlQuery.CreateAllItemsQuery());
  ctx.Load(itemsNoticias);
Elementos principales

  α Contexto de ejecución (ExecuteQuery vs ExecuteQueryAsync)
   ctx.ExecuteQueryAsync(NoticiasCargadas,
  ErrorCargaNoticias);

            void ErrorCargaNoticias(object sender,
  ClientRequestFailedEventArgs args)
          {
               //HasLoaded = true;
               string mensajeError = args.Message;
          }

          void NoticiasCargadas(object sender,
  ClientRequestSucceededEventArgs args)
          {
              HasLoaded = true;
          }
Añadiendo Silverlight
Asincronía con Sharepoint
O cosas que no se pueden hacer a la vez con Silverlight


α Actualizar la interfaz
  β   Dispatcher.BeginInvoke


α En XAML, usar Converters
  β   Convertir objetos antes


α Masificar con controles de usuario
  β   Posible, pero costoso
XAML
Desarrollo reutilizable

α Utilizar un modelo de capas como:
 β   ModelViewViewModel
 β   ModelViewController

α Permite ports sencillos para:
 β   Windows Presentation Foundation
 β   Silverlight OutOfBrowser
 β   Windows Phone 7
Silverlight OOB
O de como usarlo en el escritorio


α Definir el contexto adecuado (ClientContext)

α Configurar Silverlight para OOB

α Listo!
OutOfBrowser
Sitios anónimos
Silverlight y el usuario anónimo

α GetItems restringido de serie para la API de Silverlight

α Permitimos el acceso con PowerShell
    $webapp = Get-SPWebApplication -Identity
    "http://demo.spdev.local"

    $webapp.ClientCallableSettings.AnonymousRestrictedTypes
    .Remove([Microsoft.SharePoint.SPList], "GetItems")

    $webapp.Update()
Anónimo
¿Cómo lo hicimos?
Colaboración entre desarrollador y diseñador
Mejorando interfaz de SharePoint 2010 con Silverlight 4
Mejorando interfaz de SharePoint 2010 con Silverlight 4

Mejorando interfaz de SharePoint 2010 con Silverlight 4

  • 1.
    C&B207 Mejorando la interfazde SharePoint 2010 con Silverlight 4 Guillermo Bas - Javier Yagüe SharePoint Developer - DPS MCTS y MCPD en SharePoint 2010 gbas@solid.com – jyague@solidq.com
  • 2.
    Objetivos de lasesión Desarrollando aplicaciones Silverlight para SharePoint 2010 α Identificar cómo puede ayudarnos Silverlight a mejorar la interfaz de SharePoint 2010 α Identificar el mejor método de despliegue en cada proyecto α Comprender cómo funciona el acceso a datos desde Silverlight
  • 3.
    En capítulos anteriores… Silverlight y SharePoint 2007 α Requería modificar Web.Config α Despliegue más complejo α Solo posible a través de HTML
  • 4.
    Ahora Silverlight ySharePoint 2010 α Soportado de serie α Silverlight WebPart (Solo necesita la ruta del .xap) α Posibilidad de crear nuestra propia WebPart personalizada α Despliegue muy sencillo
  • 5.
  • 6.
  • 7.
    Ubicaciones para el.xap Sistema físico Sistema virtual Carpeta Layouts Biblioteca de documentos Carpeta Layouts/ClientBin En la raíz o en una subcarpeta bajo el sitio de SharePoint (Designer)
  • 8.
    Métodos de despliegue αSubir el .xap a una biblioteca de documentos αEmpaquetar el .xap en un WSP para su despliegue β Módulo β Directorio mapeado αWebPart personalizado de Silverlight (ej. Media WebPart)
  • 9.
  • 10.
    API de Silverlightpara SP2010 ¿Cómo funciona? α Encapsulando los Servicios Web WCF de SharePoint 2010 ¿Qué nos proporciona? α Una capa de abstracción fácil de utilizar α Integración del modelo de objetos SharePoint con aplicaciones que se ejecutan en el cliente
  • 11.
    API de Silverlightpara SP2010 Ensamblados (Referencias necesarias) α Microsoft.SharePoint.Client.Silverlight.dll (265 KB) α Microsoft.SharePoint.Client.Silverlight.Runtime.dll (141 KB) Ubicación α 14TEMPLATELAYOUTSClientBin Espacio de nombres Using Microsoft.SharePoint.Client;
  • 12.
    Elementos principales α El contexto remoto (ClientContext) ClientContext ctx; if (ClientContext.Current == null) { ctx = new ClientContext("http://mysite"); } else { ctx = ClientContext.Current; }
  • 13.
    Elementos principales α Cola de consultas (Load) List listaNoticias = ctx.Web.Lists.GetByTitle("Noticias"); itemsNoticias = listaNoticias.GetItems(CamlQuery.CreateAllItemsQuery()); ctx.Load(itemsNoticias);
  • 14.
    Elementos principales α Contexto de ejecución (ExecuteQuery vs ExecuteQueryAsync) ctx.ExecuteQueryAsync(NoticiasCargadas, ErrorCargaNoticias); void ErrorCargaNoticias(object sender, ClientRequestFailedEventArgs args) { //HasLoaded = true; string mensajeError = args.Message; } void NoticiasCargadas(object sender, ClientRequestSucceededEventArgs args) { HasLoaded = true; }
  • 15.
  • 16.
    Asincronía con Sharepoint Ocosas que no se pueden hacer a la vez con Silverlight α Actualizar la interfaz β Dispatcher.BeginInvoke α En XAML, usar Converters β Convertir objetos antes α Masificar con controles de usuario β Posible, pero costoso
  • 17.
  • 18.
    Desarrollo reutilizable α Utilizarun modelo de capas como: β ModelViewViewModel β ModelViewController α Permite ports sencillos para: β Windows Presentation Foundation β Silverlight OutOfBrowser β Windows Phone 7
  • 19.
    Silverlight OOB O decomo usarlo en el escritorio α Definir el contexto adecuado (ClientContext) α Configurar Silverlight para OOB α Listo!
  • 20.
  • 21.
    Sitios anónimos Silverlight yel usuario anónimo α GetItems restringido de serie para la API de Silverlight α Permitimos el acceso con PowerShell $webapp = Get-SPWebApplication -Identity "http://demo.spdev.local" $webapp.ClientCallableSettings.AnonymousRestrictedTypes .Remove([Microsoft.SharePoint.SPList], "GetItems") $webapp.Update()
  • 22.
  • 23.
    ¿Cómo lo hicimos? Colaboraciónentre desarrollador y diseñador