Date post: | 19-Jan-2015 |
Category: |
Documents |
Upload: | andres-iturralde |
View: | 1,875 times |
Download: | 1 times |
Desarrollando Soluciones para Microsoft SharePoint Server 2010 Utilizando el Modelo de Objeto de Cliente
Andrés IturraldeSenior Consultant - [email protected]://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!!