Este documento describe el Modelo de Objetos de Cliente (Client OM) para desarrollar soluciones en Microsoft SharePoint Server 2010. Explica conceptos básicos como cargar y consultar datos, ámbito de excepciones y carga condicional. También cubre temas avanzados como consultas LINQ, acceso a datos entre sitios con Silverlight, y las principales tecnologías de datos como listas y servicios web.
1. Desarrollando Soluciones para Microsoft SharePoint Server 2010 Utilizando el Modelo de Objeto de Cliente Andrés Iturralde Senior Consultant - IKOM aiturralde@ikom.cl http://aiturralde.com
2. Tecnologías de Datos Listasfuertementetipadas Listasdebilmentetipadas Métodos, MOSS ClientOM Web Services REST APIs Cliente Plataforma de Datos Farm Site List Data External Lists ServerOM Listasdebilmentetipadas Servidor LINQ Listasfuertementetipadas Nuevo en 2010 Mejorado
3. Agenda Modelo de objetos de cliente Lo básico Queries Ámbito de Excepciones Cargacondicional Accesodatos en Silverlight cross-site
4. Modelo de objetos de cliente: Lo básico Librería de ladoclienteparallamarremotamente a SharePoint Subconjunto de objetos del lado del servidor Usable en JavaScript, .net CLR, Silverlight CLR Requests son encoladosparamejorrendimiento Usadopor UI de SharePoint UI paraoperacionescomoeliminación en batch
5. Empezando con el modelo de objetos de cliente .NET CLR: 14SAPI Silverlight: 14EMPLATEAYOUTSlientBin Empaquetado en .XAP JavaScript: Usa <ScriptLink>/SP.SOD.executeparaagregararchivos JS
6. Empezando: 3 cosas a saber 1. ClientContextes el objeto central 2. Antes de leer unapropiedad, debespreguntarporella 3. Todos los request son enviados en un batch clientContext = new ClientContext(“http://MiSitio”); clientContext.Load(list); clientContext.ExecuteQuery();
7. HolaMundo! Modelo de objetos JavaScript Modelo de objetos Silverlight
9. JavaScript var context; var web; function testButtonClick() { context = new SP.ClientContext(); web = context.get_web(); context.load(web) context.executeQueryAsync(titleRetrievedContinue); } function titleRetrievedContinue() { web.set_title(web.get_title() + " + JavaScript"); web.update(); context.executeQueryAsync(sayDone); }
10. Accesando a datos Aplicación Cliente Aplicación Cliente WPF/WinForm/Office Silverlight JavaScript API Cliente Cliente ExecuteQuery() XML JSON Servidor Web Service Client.svc Aplicación Servidor SharePoint API Data SharePoint
11. Objetosimportantes en Modelo de objetoscliente Site Web ContentType Change List Navigation Form NavigationNode View UserCustomAction Field RoleDefinition ListItem RoleAssignment Folder User Interface WorkflowAssociation Data and Schema File WorkflowTemplate Logic WebPart Security
19. Obtención de Consultas Por default, .Load obtendralaspropiedadesmás simples de un objeto Explicitamenteesnecesarioobtenerobjetoscliente o coleccioneshijas PuedesusarLinqparadefinir la forma de tu query Quépropiedadesincluir Que sub-objetosretornar Items de listasaúnnecesitanusar queries CAML
20. PropiedadesWeb: Operaciones Default boolAllowRssFeeds boolAllowRssFeeds boolAllowRssFeeds Group AssociatedMemberGroup DateTimeCreated DateTimeCreated ContentTypeCollectionContentTypes DateTimeCreated User CurrentUser String Description String Description String Description GuidId GuidId GuidId FieldCollectionFields List Lists boolRecycleBinEnabled List Lists boolRecycleBinEnabled boolRecycleBinEnabled Folder RootFolder String Title Folder RootFolder String Title String Title clientContext.Load(web); clientContext.Load(web.RootFolder); clientContext.Load(web.Lists);
22. LinQ var query = from list in clientContext.Web.Lists where list.Title != null select list; var result = clientContext.LoadQuery(query); clientContext.ExecuteQuery();
24. Modos de Consulta: Fill vs. Query “Fill”: context.Load(object, paramsLinqExpression) Llena los objetos en el contexto: in-place “Query”:context.LoadQuery(IQueryable) Usaconsultalinqpararetornarobjetospersonalizados No llenados en el contexto
25. Lo básico de sintaxistipoMétodo Usa el método.Where para: Filtrar los items retornados en unacolección Usa el método.Includepara: Explicitamenteseleccionarpropiedades u objetoshijos a retornar Usa el método.Take para: Restringir el número de items retornados
27. Tópicosavanzados del modelo de objetoscliente Manejo de excepciones Sirveparareaccionar a excepciones en un batch Scope Condicional + Retornos Sirveparachequearcondiciones antes de hacercargas, en el servidordentro de un batch Para significarcomo los métodos son filtradosutiliza scopes y sentencias “using” (IDisposable)
29. Accesodatos cross-site con Silverlight El problema: Quiereshostearaplicacionespoderosassobre SharePoint queusen data en otroservidor Quieresminimizar el impacto en el deploy de SharePoint Silverlight es (generalmente) limitado a llamadassobre un dominio Unasolución: hospeda XAP en el servidorexterno y delega un token de usuario
30. Página en el navegador (http://sharepoint/page.aspx) 2. Páginaesinstanciada con un token especial Silverlight XAP (http://scrum/myscrum.xap) 3. XAP llama a un Web Service personalizado en el servidorhuesped con el Token Cliente Servidor http://sharepoint http://scrum 1. Web Part esinsertado en la página con markup queindicaque el server huéspedes http://scrum 4. Servidor de aplicacionespuededireccionar request al modelo de objeto de cliente de parte del usuario
31. Acceso a datos cross-site: conceptosprincipales Aplicaciónprincipal SPUserquerepresenta la cuenta con el request entrante Permisosefectivos de Silverlight con Modelo de objetocliente = Permisos de la aplicación principal y usuarioiniciador XML de la aplicación Contieneinformación del servidor de alojamiento Proveedor de aplicacionesexternas Puedeserinstalado en el servidoralojadorparaproveerexperienciapersonalizada al agregaraplicaciones Redireccionador de request Códigoinstalado en el servidorremotopararedireccionar requests
32. Tecnologías de Datos Listasfuertementetipadas Listasdebilmentetipadas Métodos, MOSS ClientOM Web Services REST APIs Cliente Plataforma de Datos Farm Site List Data External Lists ServerOM Listasdebilmentetipadas Servidor LINQ Listasfuertementetipadas Nuevo en 2010 Mejorado