Desarrollando Soluciones para Microsoft SharePoint Server 2010 Utilizando el Modelo de Objeto de Cliente<br />Andrés Iturr...
Tecnologías de Datos<br />Listasfuertementetipadas<br />Listasdebilmentetipadas<br />Métodos, MOSS<br />ClientOM<br />Web ...
Agenda<br />Modelo de objetos de cliente<br />Lo básico<br />Queries<br />Ámbito de Excepciones<br />Cargacondicional<br /...
Modelo de objetos de cliente: Lo básico<br />Librería de ladoclienteparallamarremotamente a SharePoint<br />Subconjunto de...
Empezando con el modelo de objetos de cliente<br />.NET CLR:  14ISAPI <br />Silverlight: 14TEMPLATELAYOUTSClientBin<br />E...
Empezando: 3 cosas a saber<br />1. ClientContextes el objeto central<br />2. Antes de leer unapropiedad, debespreguntarpor...
HolaMundo! <br />Modelo de objetos JavaScript<br />Modelo de objetos Silverlight<br />
C#<br />private ClientContext context;<br />private Web web;<br />private void TestButton_Click(object sender, RoutedEvent...
JavaScript<br />var context;<br />var web;<br />function testButtonClick()<br />{<br />	context = new SP.ClientContext();<...
Accesando a datos<br />Aplicación<br />Cliente<br />Aplicación<br />Cliente<br />WPF/WinForm/Office<br />Silverlight<br />...
Objetosimportantes en Modelo de objetoscliente<br />Site<br />Web<br />ContentType<br />Change<br />List<br />Navigation<b...
Items no cubiertospormodelo de objetoscliente<br /><ul><li>Perfiles de Usuario
Personas
Búsqueda
MetadaEmpresarial
Web services REST Excel
Publicación
Administración</li></li></ul><li>Limitaciones del módelo de objetoscliente<br />No puedeserusado en el servidorparahablar ...
Obtención de Consultas<br />Por default, .Load obtendralaspropiedadesmás simples de un objeto<br />Explicitamenteesnecesar...
PropiedadesWeb: Operaciones Default<br />boolAllowRssFeeds<br />boolAllowRssFeeds<br />boolAllowRssFeeds<br />Group Associ...
Queries avanzadosusandoLinQ<br />
LinQ<br />var query = from list in clientContext.Web.Lists<br />         where list.Title != null<br />         select lis...
Método<br />clientContext.Load(oList,list=> list.Fields    .Where(field => field.Hidden == false &&<br />field.Filterable=...
Modos de Consulta: Fill vs. Query<br />“Fill”: context.Load(object, paramsLinqExpression)<br />Llena los objetos en el con...
Lo básico de sintaxistipoMétodo<br />Usa el método.Where para:<br />Filtrar los items retornados en unacolección<br />Usa ...
Queries y Filtros<br />
Tópicosavanzados del modelo de objetoscliente<br />Manejo de excepciones<br />Sirveparareaccionar a excepciones en un batc...
Manejo de excepciones y cargascondicionales<br />
Accesodatos cross-site con Silverlight<br />El problema:<br />Quiereshostearaplicacionespoderosassobre SharePoint queusen ...
Upcoming SlideShare
Loading in...5
×

SharePoint 2010 Client Object Model

1,945

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,945
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
29
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

SharePoint 2010 Client Object Model

  1. 1. Desarrollando Soluciones para Microsoft SharePoint Server 2010 Utilizando el Modelo de Objeto de Cliente<br />Andrés Iturralde<br />Senior Consultant - IKOM<br />aiturralde@ikom.cl<br />http://aiturralde.com<br />
  2. 2. Tecnologías de Datos<br />Listasfuertementetipadas<br />Listasdebilmentetipadas<br />Métodos, MOSS<br />ClientOM<br />Web Services<br />REST APIs<br />Cliente<br />Plataforma de Datos<br />Farm<br />Site<br />List Data<br />External Lists<br />ServerOM<br />Listasdebilmentetipadas<br />Servidor<br />LINQ<br />Listasfuertementetipadas<br />Nuevo en 2010<br />Mejorado<br />
  3. 3. Agenda<br />Modelo de objetos de cliente<br />Lo básico<br />Queries<br />Ámbito de Excepciones<br />Cargacondicional<br />Accesodatos en Silverlight cross-site<br />
  4. 4. Modelo de objetos de cliente: Lo básico<br />Librería de ladoclienteparallamarremotamente a SharePoint<br />Subconjunto de objetos del lado del servidor<br />Usable en JavaScript, .net CLR, Silverlight CLR<br />Requests son encoladosparamejorrendimiento<br />Usadopor UI de SharePoint UI paraoperacionescomoeliminación en batch<br />
  5. 5. Empezando con el modelo de objetos de cliente<br />.NET CLR: 14ISAPI <br />Silverlight: 14TEMPLATELAYOUTSClientBin<br />Empaquetado en .XAP<br />JavaScript: <br />Usa <ScriptLink>/SP.SOD.executeparaagregararchivos JS<br />
  6. 6. Empezando: 3 cosas a saber<br />1. ClientContextes el objeto central<br />2. Antes de leer unapropiedad, debespreguntarporella<br />3. Todos los request son enviados en un batch<br />clientContext = new ClientContext(“http://MiSitio”);<br />clientContext.Load(list);<br />clientContext.ExecuteQuery();<br />
  7. 7. HolaMundo! <br />Modelo de objetos JavaScript<br />Modelo de objetos Silverlight<br />
  8. 8. C#<br />private ClientContext context;<br />private Web web;<br />private void TestButton_Click(object sender, RoutedEventArgs e)<br />{<br /> context = ClientContext.Current;<br /> web = context.Web;context.Load(web);<br />context.ExecuteQueryAsync(TitleRetrievedContinue, null);<br />}<br />private void TitleRetrievedContinue(object sender, ClientRequestSucceededEventArgsargs)<br />{<br />web.Title = web.Title + " + Silverlight";<br />web.Update();<br />context.ExecuteQueryAsync(SayDone, null);<br />}<br />
  9. 9. JavaScript<br />var context;<br />var web;<br />function testButtonClick()<br />{<br /> context = new SP.ClientContext();<br /> web = context.get_web();<br />context.load(web)<br />context.executeQueryAsync(titleRetrievedContinue);<br />}<br />function titleRetrievedContinue()<br />{<br />web.set_title(web.get_title() + " + JavaScript");<br />web.update();<br />context.executeQueryAsync(sayDone);<br />}<br />
  10. 10. Accesando a datos<br />Aplicación<br />Cliente<br />Aplicación<br />Cliente<br />WPF/WinForm/Office<br />Silverlight<br />JavaScript<br />API Cliente<br />Cliente<br />ExecuteQuery()<br />XML<br />JSON<br />Servidor<br />Web Service<br />Client.svc<br />Aplicación<br />Servidor<br />SharePoint API<br />Data SharePoint<br />
  11. 11. Objetosimportantes en Modelo de objetoscliente<br />Site<br />Web<br />ContentType<br />Change<br />List<br />Navigation<br />Form<br />NavigationNode<br />View<br />UserCustomAction<br />Field<br />RoleDefinition<br />ListItem<br />RoleAssignment<br />Folder<br />User Interface<br />WorkflowAssociation<br />Data and Schema<br />File<br />WorkflowTemplate<br />Logic<br />WebPart<br />Security<br />
  12. 12. Items no cubiertospormodelo de objetoscliente<br /><ul><li>Perfiles de Usuario
  13. 13. Personas
  14. 14. Búsqueda
  15. 15. MetadaEmpresarial
  16. 16. Web services REST Excel
  17. 17. Publicación
  18. 18. Administración</li></li></ul><li>Limitaciones del módelo de objetoscliente<br />No puedeserusado en el servidorparahablar con el mismoservidor<br />Aúnesnecesariomanejarsemánticas de sincronización/actualización (log de cambiospuedeayudar)<br />No existencapacidadesparaelevación de privilegios<br />Los request son regulados<br />.net CLR tienemétodossincronicos; Silverlight CLR y Jscript son asincronos<br />
  19. 19. Obtención de Consultas<br />Por default, .Load obtendralaspropiedadesmás simples de un objeto<br />Explicitamenteesnecesarioobtenerobjetoscliente o coleccioneshijas<br />PuedesusarLinqparadefinir la forma de tu query<br />Quépropiedadesincluir<br />Que sub-objetosretornar<br />Items de listasaúnnecesitanusar queries CAML<br />
  20. 20. PropiedadesWeb: Operaciones Default<br />boolAllowRssFeeds<br />boolAllowRssFeeds<br />boolAllowRssFeeds<br />Group AssociatedMemberGroup<br />DateTimeCreated<br />DateTimeCreated<br />ContentTypeCollectionContentTypes<br />DateTimeCreated<br />User CurrentUser<br />String Description<br />String Description<br />String Description<br />GuidId<br />GuidId<br />GuidId<br />FieldCollectionFields<br />List Lists<br />boolRecycleBinEnabled<br />List Lists<br />boolRecycleBinEnabled<br />boolRecycleBinEnabled<br />Folder RootFolder<br />String Title<br />Folder RootFolder<br />String Title<br />String Title<br />clientContext.Load(web);<br />clientContext.Load(web.RootFolder);<br />clientContext.Load(web.Lists);<br />
  21. 21. Queries avanzadosusandoLinQ<br />
  22. 22. LinQ<br />var query = from list in clientContext.Web.Lists<br />         where list.Title != null<br />         select list;<br /> <br />var result = clientContext.LoadQuery(query);<br />clientContext.ExecuteQuery();<br />
  23. 23. Método<br />clientContext.Load(oList,list=> list.Fields .Where(field => field.Hidden == false &&<br />field.Filterable== true));<br />clientContext.ExecuteQuery();<br />
  24. 24. Modos de Consulta: Fill vs. Query<br />“Fill”: context.Load(object, paramsLinqExpression)<br />Llena los objetos en el contexto: in-place<br />“Query”:context.LoadQuery(IQueryable)<br />Usaconsultalinqpararetornarobjetospersonalizados<br />No llenados en el contexto<br />
  25. 25. Lo básico de sintaxistipoMétodo<br />Usa el método.Where para:<br />Filtrar los items retornados en unacolección<br />Usa el método.Includepara:<br />Explicitamenteseleccionarpropiedades u objetoshijos a retornar<br />Usa el método.Take para:<br />Restringir el número de items retornados<br />
  26. 26. Queries y Filtros<br />
  27. 27. Tópicosavanzados del modelo de objetoscliente<br />Manejo de excepciones<br />Sirveparareaccionar a excepciones en un batch<br />Scope Condicional + Retornos<br />Sirveparachequearcondiciones antes de hacercargas, en el servidordentro de un batch<br />Para significarcomo los métodos son filtradosutiliza scopes y sentencias “using” (IDisposable)<br />
  28. 28. Manejo de excepciones y cargascondicionales<br />
  29. 29. Accesodatos cross-site con Silverlight<br />El problema:<br />Quiereshostearaplicacionespoderosassobre SharePoint queusen data en otroservidor<br />Quieresminimizar el impacto en el deploy de SharePoint<br />Silverlight es (generalmente) limitado a llamadassobre un dominio<br />Unasolución: hospeda XAP en el servidorexterno y delega un token de usuario<br />
  30. 30. Página en el navegador (http://sharepoint/page.aspx)<br />2. Páginaesinstanciada con un token especial<br />Silverlight XAP<br />(http://scrum/myscrum.xap)<br />3. XAP llama a un Web Service personalizado en el servidorhuesped con el Token<br />Cliente<br />Servidor<br />http://sharepoint<br />http://scrum<br />1. Web Part esinsertado en la página con markup queindicaque el server huéspedes http://scrum<br />4. Servidor de aplicacionespuededireccionar request al modelo de objeto de cliente de parte del usuario<br />
  31. 31. Acceso a datos cross-site: conceptosprincipales<br />Aplicaciónprincipal<br />SPUserquerepresenta la cuenta con el request entrante<br />Permisosefectivos de Silverlight con Modelo de objetocliente = Permisos de la aplicación principal y usuarioiniciador<br />XML de la aplicación<br />Contieneinformación del servidor de alojamiento<br />Proveedor de aplicacionesexternas<br />Puedeserinstalado en el servidoralojadorparaproveerexperienciapersonalizada al agregaraplicaciones<br />Redireccionador de request<br />Códigoinstalado en el servidorremotopararedireccionar requests<br />
  32. 32. Tecnologías de Datos<br />Listasfuertementetipadas<br />Listasdebilmentetipadas<br />Métodos, MOSS<br />ClientOM<br />Web Services<br />REST APIs<br />Cliente<br />Plataforma de Datos<br />Farm<br />Site<br />List Data<br />External Lists<br />ServerOM<br />Listasdebilmentetipadas<br />Servidor<br />LINQ<br />Listasfuertementetipadas<br />Nuevo en 2010<br />Mejorado<br />
  33. 33.
  34. 34. Gracias!!<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×