sharepoint 2010 client object model

Post on 19-Jan-2015

1.876 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Desarrollando Soluciones para Microsoft SharePoint Server 2010 Utilizando el Modelo de Objeto de Cliente

Andrés IturraldeSenior Consultant - IKOMaiturralde@ikom.clhttp://aiturralde.com

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

Agenda

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

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

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

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”);

7

Hola Mundo!

Modelo de objetos JavaScriptModelo de objetos Silverlight

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);

}

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);

}

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

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

Items no cubiertos por modelo de objetos cliente

> Perfiles de Usuario > Personas> Búsqueda> Metada Empresarial

> Web services REST Excel

> Publicación> Administración

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

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

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

Queries avanzados usando LinQ

LinQ

var query = from list in clientContext.Web.Lists         where list.Title != null         select list; var result = clientContext.LoadQuery(query);

clientContext.ExecuteQuery();

Método

clientContext.Load(oList,list => list.Fields .Where(field => field.Hidden == false && field.Filterable == true));

clientContext.ExecuteQuery();

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

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

21

Queries y Filtros

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)

23

Manejo de excepciones y cargas condicionales

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

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

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

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

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

29

Gracias!!

top related