SharePoint 2010 nos ofrece la posibilidad de integrar Silverlight en nuestras WebParts y de ésta forma mejorar considerablemente el modo en el que nuestros usuarios interactúan con los contenidos. En esta sesión mostraremos cómo mejorar la experiencia de usuario en SharePoint a través de una interfaz creada con Silverlight, estudiaremos como podemos mejorar la forma en la que los usuarios acceden a los datos almacenados en listas o bibliotecas de SharePoint 2010.
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Mejorando interfaz de SharePoint 2010 con Silverlight 4
1. 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
2. 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
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 y SharePoint 2010
α Soportado de serie
α Silverlight WebPart (Solo
necesita la ruta del .xap)
α Posibilidad de crear nuestra
propia WebPart personalizada
α Despliegue muy sencillo
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)
10. 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
11. 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;
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;
}
16. 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
18. Desarrollo reutilizable
α Utilizar un modelo de capas como:
β ModelViewViewModel
β ModelViewController
α Permite ports sencillos para:
β Windows Presentation Foundation
β Silverlight OutOfBrowser
β Windows Phone 7
19. Silverlight OOB
O de como usarlo en el escritorio
α Definir el contexto adecuado (ClientContext)
α Configurar Silverlight para OOB
α Listo!
21. 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()