Your SlideShare is downloading. ×
0
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
SharePoint 2010 Client Object Model
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

SharePoint 2010 Client Object Model

1,926

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. 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. 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. 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. 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. 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. HolaMundo! <br />Modelo de objetos JavaScript<br />Modelo de objetos Silverlight<br />
  • 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. 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. 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. 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. Items no cubiertospormodelo de objetoscliente<br /><ul><li>Perfiles de Usuario
  • 13. Personas
  • 14. Búsqueda
  • 15. MetadaEmpresarial
  • 16. Web services REST Excel
  • 17. Publicación
  • 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. 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. 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. Queries avanzadosusandoLinQ<br />
  • 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. Método<br />clientContext.Load(oList,list=> list.Fields .Where(field => field.Hidden == false &&<br />field.Filterable== true));<br />clientContext.ExecuteQuery();<br />
  • 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. 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. Queries y Filtros<br />
  • 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. Manejo de excepciones y cargascondicionales<br />
  • 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. 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. 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. 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.
  • 34. Gracias!!<br />

×