SharePoint 2010 Client Object Model
-
Upload
andres-iturralde -
Category
Documents
-
view
1.876 -
download
1
description
Transcript of SharePoint 2010 Client Object Model
![Page 1: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/1.jpg)
Desarrollando Soluciones para Microsoft SharePoint Server 2010 Utilizando el Modelo de Objeto de Cliente
Andrés IturraldeSenior Consultant - [email protected]://aiturralde.com
![Page 2: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/2.jpg)
Tecnologías de Datos
LINQ
Farm Site List Data External Lists
Plataforma de Datos
Cliente
Servidor
Listas fuertemente tipadas
Listas debilmente tipadas
Listas fuertemente tipadas
Listas debilmente tipadas
Server OM
Client OM REST APIs
Nuevo en 2010
Mejorado
Web Services
Métodos, MOSS
![Page 3: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/3.jpg)
Agenda
Modelo de objetos de clienteLo básicoQueriesÁmbito de ExcepcionesCarga condicionalAcceso datos en Silverlight cross-site
![Page 4: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/4.jpg)
Modelo de objetos de cliente: Lo básico
Librería de lado cliente para llamar remotamente a SharePoint
Subconjunto de objetos del lado del servidorUsable en JavaScript, .net CLR, Silverlight CLR
Requests son encolados para mejor rendimiento
Usado por UI de SharePoint UI para operaciones como eliminación en batch
![Page 5: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/5.jpg)
Empezando con el modelo de objetos de cliente.NET CLR: 14\ISAPI
Silverlight: 14\TEMPLATE\LAYOUTS\ClientBinEmpaquetado en .XAP
JavaScript: Usa <ScriptLink>/SP.SOD.execute para agregar archivos JS
Microsoft.SharePoint.Client 281kbMicrosoft.SharePoint.Client.Runtime 145kb
SP.js 380kbSP.Core.js 13kbSP.Runtime.js 68kb
![Page 6: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/6.jpg)
Empezando: 3 cosas a saber1. ClientContext es el objeto central
2. Antes de leer una propiedad, debes preguntar por ella
3. Todos los request son enviados en un batch
clientContext.Load(list);
clientContext.ExecuteQuery();
clientContext = new ClientContext(“http://MiSitio”);
![Page 7: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/7.jpg)
7
Hola Mundo!
Modelo de objetos JavaScriptModelo de objetos Silverlight
![Page 8: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/8.jpg)
C#
private ClientContext context;private Web web;
private void TestButton_Click(object sender, RoutedEventArgs e){
context = ClientContext.Current;web = context.Web;context.Load(web);context.ExecuteQueryAsync(TitleRetrievedContinue, null);
}
private void TitleRetrievedContinue(object sender, ClientRequestSucceededEventArgs args){
web.Title = web.Title + " + Silverlight";web.Update();context.ExecuteQueryAsync(SayDone, null);
}
![Page 9: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/9.jpg)
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);
}
![Page 10: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/10.jpg)
Accesando a datos
AplicaciónCliente
AplicaciónCliente
API Cliente
JSONExecuteQuery()
XML
WPF/WinForm/OfficeSilverlightJavaScript
Data SharePoint
SharePoint API
Web Service
AplicaciónServidor
Client.svc
ClienteServidor
![Page 11: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/11.jpg)
11
Site
Web
ListItem
Field
View
Form
Folder
List
NavigationNode
Navigation
UserCustomAction
ContentType
RoleDefinition
WorkflowAssociation
WorkflowTemplate
RoleAssignment
Change
WebPart
File
User Interface
Data and Schema
Security
Logic
Objetos importantes en Modelo de objetos cliente
![Page 12: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/12.jpg)
Items no cubiertos por modelo de objetos cliente
> Perfiles de Usuario > Personas> Búsqueda> Metada Empresarial
> Web services REST Excel
> Publicación> Administración
![Page 13: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/13.jpg)
Limitaciones del módelo de objetos cliente
No puede ser usado en el servidor para hablar con el mismo servidorAún es necesario manejar semánticas de sincronización/actualización (log de cambios puede ayudar)No existen capacidades para elevación de privilegiosLos request son regulados.net CLR tiene métodos sincronicos; Silverlight CLR y Jscript son asincronos
![Page 14: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/14.jpg)
Obtención de Consultas
Por default, .Load obtendra las propiedades más simples de un objeto
Explicitamente es necesario obtener objetos cliente o colecciones hijas
Puedes usar Linq para definir la forma de tu query
Qué propiedades incluirQue sub-objetos retornarItems de listas aún necesitan usar queries CAML
![Page 15: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/15.jpg)
Propiedades Web: Operaciones Defaultbool AllowRssFeeds
DateTime CreatedContentTypeCollection ContentTypes
Guid IdFieldCollection Fields
Group AssociatedMemberGroup
User CurrentUser String Description
List Lists
Folder RootFolder String Title
bool RecycleBinEnabled
clientContext.Load(web);
bool AllowRssFeeds
DateTime Created
Guid Id
String Description
String Title
bool RecycleBinEnabled
bool AllowRssFeeds
DateTime Created
Guid Id
String Description
String Title
bool RecycleBinEnabled
clientContext.Load(web.RootFolder);
clientContext.Load(web.Lists);
List Lists
Folder RootFolder
![Page 16: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/16.jpg)
Queries avanzados usando LinQ
![Page 17: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/17.jpg)
LinQ
var query = from list in clientContext.Web.Lists where list.Title != null select list; var result = clientContext.LoadQuery(query);
clientContext.ExecuteQuery();
![Page 18: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/18.jpg)
Método
clientContext.Load(oList,list => list.Fields .Where(field => field.Hidden == false && field.Filterable == true));
clientContext.ExecuteQuery();
![Page 19: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/19.jpg)
Modos de Consulta: Fill vs. Query“Fill”: context.Load(object, params LinqExpression)
Llena los objetos en el contexto: in-place
“Query”:context.LoadQuery(IQueryable)
Usa consulta linq para retornar objetos personalizadosNo llenados en el contexto
![Page 20: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/20.jpg)
Lo básico de sintaxis tipo MétodoUsa el método .Where para:
Filtrar los items retornados en una colección
Usa el método.Include para:Explicitamente seleccionar propiedades u objetos hijos a retornar
Usa el método .Take para:Restringir el número de items retornados
![Page 21: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/21.jpg)
21
Queries y Filtros
![Page 22: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/22.jpg)
Tópicos avanzados del modelo de objetos cliente
Manejo de excepcionesSirve para reaccionar a excepciones en un batch
Scope Condicional + RetornosSirve para chequear condiciones antes de hacer cargas, en el servidor dentro de un batch
Para significar como los métodos son filtrados utiliza scopes y sentencias “using” (IDisposable)
![Page 23: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/23.jpg)
23
Manejo de excepciones y cargas condicionales
![Page 24: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/24.jpg)
Acceso datos cross-site con Silverlight
El problema:Quieres hostear aplicaciones poderosas sobre SharePoint que usen data en otro servidorQuieres minimizar el impacto en el deploy de SharePointSilverlight es (generalmente) limitado a llamadas sobre un dominio
Una solución: hospeda XAP en el servidor externo y delega un token de usuario
![Page 25: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/25.jpg)
ClienteServidor
Página en el navegador (http://sharepoint/page.aspx)
http://sharepoint
Silverlight XAP(http://scrum/myscrum.xap)
1. Web Part es insertado en la página con markup que indica que el server
huésped es http://scrum
2. Página es instanciada con un
token especial 3. XAP llama a un Web Service personalizado en el servidor huesped con
el Token
http://scrum
4. Servidor de aplicaciones puede direccionar request al modelo de objeto de cliente
de parte del usuario
![Page 26: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/26.jpg)
Acceso a datos cross-site: conceptos principalesAplicación principal
SPUser que representa la cuenta con el request entrantePermisos efectivos de Silverlight con Modelo de objeto cliente = Permisos de la aplicación principal y usuario iniciador
XML de la aplicaciónContiene información del servidor de alojamiento
Proveedor de aplicaciones externasPuede ser instalado en el servidor alojador para proveer experiencia personalizada al agregar aplicaciones
Redireccionador de requestCódigo instalado en el servidor remoto para redireccionar requests
![Page 27: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/27.jpg)
Tecnologías de Datos
LINQ
Farm Site List Data External Lists
Plataforma de Datos
Cliente
Servidor
Listas fuertemente tipadas
Listas debilmente tipadas
Listas fuertemente tipadas
Listas debilmente tipadas
Server OM
Client OM REST APIs
Nuevo en 2010
Mejorado
Web Services
Métodos, MOSS
![Page 28: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/28.jpg)
http://microsoft.com/spanish/msdn/latam/mediacenter/
Microsoft MSDN Latinoamérica te ofrece los últimos recursos multimedia en español para desarrolladores: presentaciones y demostraciones en directo o diferido, vía Internet, brindadas por expertos de Microsoft, las cuales te ayudarán a mantenerte al día con información sobre los productos y tecnologías que utilizas a diario en el desarrollo de tus aplicaciones.
Recursos para los desarrolladores
![Page 29: SharePoint 2010 Client Object Model](https://reader034.fdocuments.in/reader034/viewer/2022051612/54bc88984a79590a388b45a2/html5/thumbnails/29.jpg)
29
Gracias!!