SharePoint 2010 Client Object Model
Upcoming SlideShare
Loading in...5
×
 

SharePoint 2010 Client Object Model

on

  • 2,531 views

 

Statistics

Views

Total Views
2,531
Views on SlideShare
2,356
Embed Views
175

Actions

Likes
0
Downloads
26
Comments
0

2 Embeds 175

http://aiturralde.com 172
http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

SharePoint 2010 Client Object Model SharePoint 2010 Client Object Model Presentation Transcript

  • Desarrollando Soluciones para Microsoft SharePoint Server 2010 Utilizando el Modelo de Objeto de Cliente
    Andrés Iturralde
    Senior Consultant - IKOM
    aiturralde@ikom.cl
    http://aiturralde.com
  • Tecnologías de Datos
    Listasfuertementetipadas
    Listasdebilmentetipadas
    Métodos, MOSS
    ClientOM
    Web Services
    REST APIs
    Cliente
    Plataforma de Datos
    Farm
    Site
    List Data
    External Lists
    ServerOM
    Listasdebilmentetipadas
    Servidor
    LINQ
    Listasfuertementetipadas
    Nuevo en 2010
    Mejorado
  • Agenda
    Modelo de objetos de cliente
    Lo básico
    Queries
    Ámbito de Excepciones
    Cargacondicional
    Accesodatos en Silverlight cross-site
  • Modelo de objetos de cliente: Lo básico
    Librería de ladoclienteparallamarremotamente a SharePoint
    Subconjunto de objetos del lado del servidor
    Usable en JavaScript, .net CLR, Silverlight CLR
    Requests son encoladosparamejorrendimiento
    Usadopor UI de SharePoint UI paraoperacionescomoeliminación en batch
  • Empezando con el modelo de objetos de cliente
    .NET CLR: 14ISAPI
    Silverlight: 14TEMPLATELAYOUTSClientBin
    Empaquetado en .XAP
    JavaScript:
    Usa <ScriptLink>/SP.SOD.executeparaagregararchivos JS
  • Empezando: 3 cosas a saber
    1. ClientContextes el objeto central
    2. Antes de leer unapropiedad, debespreguntarporella
    3. Todos los request son enviados en un batch
    clientContext = new ClientContext(“http://MiSitio”);
    clientContext.Load(list);
    clientContext.ExecuteQuery();
  • HolaMundo!
    Modelo de objetos JavaScript
    Modelo 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, ClientRequestSucceededEventArgsargs)
    {
    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ón
    Cliente
    Aplicación
    Cliente
    WPF/WinForm/Office
    Silverlight
    JavaScript
    API Cliente
    Cliente
    ExecuteQuery()
    XML
    JSON
    Servidor
    Web Service
    Client.svc
    Aplicación
    Servidor
    SharePoint API
    Data SharePoint
  • Objetosimportantes en Modelo de objetoscliente
    Site
    Web
    ContentType
    Change
    List
    Navigation
    Form
    NavigationNode
    View
    UserCustomAction
    Field
    RoleDefinition
    ListItem
    RoleAssignment
    Folder
    User Interface
    WorkflowAssociation
    Data and Schema
    File
    WorkflowTemplate
    Logic
    WebPart
    Security
  • Items no cubiertospormodelo de objetoscliente
    • Perfiles de Usuario
    • Personas
    • Búsqueda
    • MetadaEmpresarial
    • Web services REST Excel
    • Publicación
    • Administración
  • Limitaciones del módelo de objetoscliente
    No puedeserusado en el servidorparahablar con el mismoservidor
    Aúnesnecesariomanejarsemánticas de sincronización/actualización (log de cambiospuedeayudar)
    No existencapacidadesparaelevación de privilegios
    Los request son regulados
    .net CLR tienemétodossincronicos; Silverlight CLR y Jscript son asincronos
  • Obtención de Consultas
    Por default, .Load obtendralaspropiedadesmás simples de un objeto
    Explicitamenteesnecesarioobtenerobjetoscliente o coleccioneshijas
    PuedesusarLinqparadefinir la forma de tu query
    Quépropiedadesincluir
    Que sub-objetosretornar
    Items de listasaúnnecesitanusar queries CAML
  • PropiedadesWeb: Operaciones Default
    boolAllowRssFeeds
    boolAllowRssFeeds
    boolAllowRssFeeds
    Group AssociatedMemberGroup
    DateTimeCreated
    DateTimeCreated
    ContentTypeCollectionContentTypes
    DateTimeCreated
    User CurrentUser
    String Description
    String Description
    String Description
    GuidId
    GuidId
    GuidId
    FieldCollectionFields
    List Lists
    boolRecycleBinEnabled
    List Lists
    boolRecycleBinEnabled
    boolRecycleBinEnabled
    Folder RootFolder
    String Title
    Folder RootFolder
    String Title
    String Title
    clientContext.Load(web);
    clientContext.Load(web.RootFolder);
    clientContext.Load(web.Lists);
  • Queries avanzadosusandoLinQ
  • 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, paramsLinqExpression)
    Llena los objetos en el contexto: in-place
    “Query”:context.LoadQuery(IQueryable)
    Usaconsultalinqpararetornarobjetospersonalizados
    No llenados en el contexto
  • Lo básico de sintaxistipoMétodo
    Usa el método.Where para:
    Filtrar los items retornados en unacolección
    Usa el método.Includepara:
    Explicitamenteseleccionarpropiedades u objetoshijos a retornar
    Usa el método.Take para:
    Restringir el número de items retornados
  • Queries y Filtros
  • Tópicosavanzados del modelo de objetoscliente
    Manejo de excepciones
    Sirveparareaccionar a excepciones en un batch
    Scope Condicional + Retornos
    Sirveparachequearcondiciones antes de hacercargas, en el servidordentro de un batch
    Para significarcomo los métodos son filtradosutiliza scopes y sentencias “using” (IDisposable)
  • Manejo de excepciones y cargascondicionales
  • Accesodatos cross-site con Silverlight
    El problema:
    Quiereshostearaplicacionespoderosassobre SharePoint queusen data en otroservidor
    Quieresminimizar el impacto en el deploy de SharePoint
    Silverlight es (generalmente) limitado a llamadassobre un dominio
    Unasolución: hospeda XAP en el servidorexterno y delega un token de usuario
  • Página en el navegador (http://sharepoint/page.aspx)
    2. Páginaesinstanciada con un token especial
    Silverlight XAP
    (http://scrum/myscrum.xap)
    3. XAP llama a un Web Service personalizado en el servidorhuesped con el Token
    Cliente
    Servidor
    http://sharepoint
    http://scrum
    1. Web Part esinsertado en la página con markup queindicaque el server huéspedes http://scrum
    4. Servidor de aplicacionespuededireccionar request al modelo de objeto de cliente de parte del usuario
  • Acceso a datos cross-site: conceptosprincipales
    Aplicaciónprincipal
    SPUserquerepresenta la cuenta con el request entrante
    Permisosefectivos de Silverlight con Modelo de objetocliente = Permisos de la aplicación principal y usuarioiniciador
    XML de la aplicación
    Contieneinformación del servidor de alojamiento
    Proveedor de aplicacionesexternas
    Puedeserinstalado en el servidoralojadorparaproveerexperienciapersonalizada al agregaraplicaciones
    Redireccionador de request
    Códigoinstalado en el servidorremotopararedireccionar requests
  • Tecnologías de Datos
    Listasfuertementetipadas
    Listasdebilmentetipadas
    Métodos, MOSS
    ClientOM
    Web Services
    REST APIs
    Cliente
    Plataforma de Datos
    Farm
    Site
    List Data
    External Lists
    ServerOM
    Listasdebilmentetipadas
    Servidor
    LINQ
    Listasfuertementetipadas
    Nuevo en 2010
    Mejorado
  • Gracias!!