sharepoint 2010 client object model

29
Desarrollando Soluciones para Microsoft SharePoint Server 2010 Utilizando el Modelo de Objeto de Cliente Andrés Iturralde Senior Consultant - IKOM [email protected] http://aiturralde.com

Upload: andres-iturralde

Post on 19-Jan-2015

1.875 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: SharePoint 2010 Client Object Model

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

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

Agenda

Modelo de objetos de clienteLo básicoQueriesÁmbito de ExcepcionesCarga condicionalAcceso datos en Silverlight cross-site

Page 4: SharePoint 2010 Client Object Model

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

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

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

7

Hola Mundo!

Modelo de objetos JavaScriptModelo de objetos Silverlight

Page 8: SharePoint 2010 Client Object Model

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

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

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

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

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

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

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

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

Queries avanzados usando LinQ

Page 17: SharePoint 2010 Client Object Model

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

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

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

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

21

Queries y Filtros

Page 22: SharePoint 2010 Client Object Model

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

23

Manejo de excepciones y cargas condicionales

Page 24: SharePoint 2010 Client Object Model

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

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

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

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

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

29

Gracias!!