Developing Solutions for Microsoft SharePoint Server 2010 Using the Client Object Model
Post on 15-Feb-2016
53 Views
Preview:
DESCRIPTION
Transcript
Developing Solutions for Microsoft SharePoint Server 2010 Using the Client Object Model Mike AmmerlaanProgram ManagerMicrosoft Corporation
PR07
Overview of Data Technologies
LINQ
Farm
Site
List Data
External Lists
Data Platform
Client-side
Server-side
Strongly-typed listsWeakly-typed lists
Strongly-typed lists
Weakly-typed listsServer OM
Client OM REST APIs
New in 2010Improved
Web Services
Methods, MOSS
Agenda
>Client Object Model>The Basics>Queries>Exception Scopes>Conditional Load>Silverlight Cross-site Data
Access
Client Object Model: The Basics> Client-side library for remotely calling
SharePoint> Mirrors (a subset) of objects on the server> Usable in JavaScript, .net CLR, Silverlight
CLR
> Requests are batched for over-the-wire performance
> Used by SharePoint UI for operations like batch deletion
Starting with the client OM.NET CLR: 14\ISAPI
Silverlight: 14\TEMPLATE\LAYOUTS\ClientBin
> Packaged .XAP coming post-betaJavaScript:
> Use <ScriptLink>/SP.SOD.execute to add JS files
Microsoft.SharePoint.Client 281kbMicrosoft.SharePoint.Client.Runtime
145kb
SP.js 380kbSP.Core.js 13kbSP.Runtime.js 68kb
Getting Started: 3 things to know1. ClientContext is the central object
2. Before you read a property, you have to ask for it
3. All requests must be committed in a batch
clientContext.Load(list);
clientContext.ExecuteQuery();
clientContext = new ClientContext(“http://mysite”);
Hello World, 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);
}
JavaScriptvar 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);
}
Accessing Data with Client OM
Client Application
Client Application
Client OM
JSONExecuteQuery()
XML
WPF/WinForm/OfficeSilverlightJavaScript
SharePoint Data
SharePoint API
Web Service
ServerApplication
Client.svc
clientserver
Site
Web
ListItem
Field
View
Form
Folder
List
NavigationNode
Navigation
UserCustomAction
ContentType
RoleDefinition
WorkflowAssociationWorkflowTemplate
RoleAssignment
Change
WebPart
File
User Interface
Data and Schema
Security
Logic
Major Objects in Client Object Model
Items not covered by CSOM
> User Profiles> People> Search> Enterprise
Metadata
> Excel REST web services
> Publishing> Administration
Client Object Model Limitations> Client object model cannot be used on
server to talk to same-server> You still need to handle synch/update
semantics (change log could help)> No elevation of privilege capabilities> Requests are throttled> .net CLR has sync method;
Silverlight CLR and Jscript are async
Retrieval Queries> By default, .Load will fetch most*
simple properties of an object> Explicitly need to retrieve client objects or
child collections> You can use Linq to further define the
shape of your queries> What properties to include> What sub-objects to retrieve> (List items still need to use CAML queries)
Web Properties: Default Operationsbool 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
Advanced queries using Linq
Query Syntax
var query = from list in clientContext.Web.Lists where list.Title != null select list; var result = clientContext.LoadQuery(query);
clientContext.ExecuteQuery();
Method Syntax
clientContext.Load(oList,list => list.Fields .Where(field => field.Hidden == false && field.Filterable == true));
clientContext.ExecuteQuery();
Query Modes: Fill vs. Query> “Fill”:
context.Load(object, params LinqExpression)> Fills out the objects in the context: in-
place> ‘method syntax’ linq
> “Query”:context.LoadQuery(IQueryable)> Use linq query to return custom objects> Not filled into the context> ‘query syntax’ and ‘method syntax’ linq
Method Query Syntax Basics> Use .Where method to:
> Filter down items retrieved in a collection
> Use .Include method to:> Explicitly select properties or child objects
to retrieve> You own specifying what you want!
> (use .IncludeWithDefaultProperties for default + custom properties)
> Use .Take method to:> Restrict overall number of items retrieved
Queries and Filtering
Client Object Model Advanced Topics
> Exception Handling> Use to react to exceptions within a batch
> Conditional Scope + Retrieves> Use to check conditions before doing loads,
on the server within a batch
> Uses scopes and using statements (IDisposable) to signify how methods are filtered
Exception Handling & Conditional Load
Silverlight Cross-Site Data Accessusing the Client Object Model
> The Problem:> You want to host powerful apps on
SharePoint that use data on another server
> You want to minimize impact to SharePoint deployments
> Silverlight is (generally) limited to calls on one domain
> One solution: host XAP on external server & delegate user token
clientserver
Browser Page (http://sharepoint/page.aspx)
http://sharepoint
Silverlight XAP(http://scrum/myscrum.xap)
1. Web Part is added to page with application markup that
indicates host server is http://scrum
2. Page is instantiated with special
token 3. XAP calls back to custom web service on host server, with
token
http://scrum4. App server can forwards
client OM request on
behalf of user
Cross-site data access: core conceptsApplication Principal
> SPUser that represents the incoming request account
> Effective permissions of Silverlight w/ client OM = Permissions of App Principal & Initiating User
Application XML> Contains hosting server information
External Application Provider> Can be deployed to host server to provide
customized application-add experience
Request Forwarder> Code deployed to remote server to forward
requests
Cross-Site Data Access
Getting Started: 3 things to know1. ClientContext is the central object
2. Before you read a property, you have to ask for it
3. All requests must be committed in a batch
clientContext.Load(list);
clientContext.ExecuteQuery();
clientContext = new ClientContext(“http://mysite”);
Overview of Data Technologies
LINQ
Farm
Site
List Data
External Lists
Data Platform
Client-side
Server-side
Strongly-typed listsWeakly-typed lists
Strongly-typed lists
Weakly-typed listsServer OM
Client OM REST APIs
New in 2010Improved
Web Services
Methods, MOSS
YOUR FEEDBACK IS IMPORTANT TO US! Please fill out session evaluation
forms online atMicrosoftPDC.com
Learn More On Channel 9> Expand your PDC experience through
Channel 9
> Explore videos, hands-on labs, sample code and demos through the new Channel 9 training courses
channel9.msdn.com/learnBuilt by Developers for Developers….
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
top related