mejorando interfaz de sharepoint 2010 con silverlight 4
DESCRIPTION
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.TRANSCRIPT
Mejorando la interfaz de SharePoint 2010 con Silverlight 4
Guillermo Bas - Javier Yagüe
C&B207
SharePoint Developer - DPS MCTS y MCPD en 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
Objetivos de la sesión Desarrollando aplicaciones Silverlight para SharePoint 2010
Silverlight y SharePoint 2007
αRequería modificar Web.Config
αDespliegue más complejo
α Solo posible a través de HTML
En capítulos anteriores…
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
Ahora
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)
α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
Métodos de despliegue
¿Cómo funciona?
α Encapsulando los Servicios Web WCF de SharePoint 2010
API de Silverlight para SP2010
¿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
Ensamblados (Referencias necesarias)
αMicrosoft.SharePoint.Client.Silverlight.dll (265 KB)
αMicrosoft.SharePoint.Client.Silverlight.Runtime.dll (141 KB)
API de Silverlight para SP2010
Espacio de nombres
Using Microsoft.SharePoint.Client;
Ubicación
α 14\TEMPLATE\LAYOUTS\ClientBin
α El contexto remoto (ClientContext)
Elementos principales
ClientContext ctx;
if (ClientContext.Current == null)
{
ctx = new ClientContext("http://mysite");
}
else
{
ctx = ClientContext.Current;
}
αCola de consultas (Load)
Elementos principales
List listaNoticias =
ctx.Web.Lists.GetByTitle("Noticias");
itemsNoticias =
listaNoticias.GetItems(CamlQuery.CreateAllItemsQuery());
ctx.Load(itemsNoticias);
αContexto de ejecución (ExecuteQuery vs ExecuteQueryAsync)
Elementos principales
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
α Actualizar la interfaz
β Dispatcher.BeginInvoke
α En XAML, usar Converters
β Convertir objetos antes
α Masificar con controles de usuario
β Posible, pero costoso
Asincronía con Sharepoint O cosas que no se pueden hacer a la vez con Silverlight
XAML
α Utilizar un modelo de capas como: β ModelViewViewModel
β ModelViewController
α Permite ports sencillos para: β Windows Presentation Foundation
β Silverlight OutOfBrowser
β Windows Phone 7
Desarrollo reutilizable
α Definir el contexto adecuado (ClientContext)
α Configurar Silverlight para OOB
α Listo!
Silverlight OOB O de como usarlo en el escritorio
OutOfBrowser
α GetItems restringido de serie para la API de Silverlight
α Permitimos el acceso con PowerShell
Sitios anónimos Silverlight y el usuario anónimo
$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