Maxim Lukiyanov Program Manager Microsoft Corporation 2/24/2019 4:00 PM PR12 It's All About the Services: Developing Custom Applications for Microsoft SharePoint Server 2010 Using Microsoft ASP.NET, WCF, and REST Maxim Lukiyanov Program Manager Microsoft Corporation © 2007 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.
Agenda SharePoint Web Services REST Client Object Model 2/24/2019 4:00 PM Agenda SharePoint Web Services REST Client Object Model Custom Web Services © 2007 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.
SharePoint Web Services Browser .NET CLR Other Platforms Internet REST Client OM ASP.NET WCF
REST REST Client OM ASP.NET WCF
REST Access to SharePoint lists and library data …/_vti_bin/listdata.svc Lists and List items map to resources listdata.svc/Employees(123) Operations map to HTTP verbs GET, POST, PUT, DELETE
Example: Adding Announcement to SharePoint using HTTP POST POST /_vti_bin/listdata.svc/Announcements HTTP/1.0 Content-Type:application/json Accept:application/json Content-Length: 58 { Title: ‘New SharePoint REST Interface’, Body: ‘Accessible from any platform with HTTP stack’ }
Based on ADO.NET Data Services Flexible URL conventions for querying data listdata.svc/Employees? $filter=JobTitle eq 'SDE' $orderby=Fullname Multiple representations JSON and Atom (full AtomPub support) Feed readers, Excel Power Pivot (Gemini) Batching, ETags, Paging, Documents
REST: Atom feeds in the browser demo
Example: Query Translation Original REST Query: GET /_vti_bin/listdata.svc/Employees? $filter=Project/Title eq ‘Project1‘ HTTP/1.0 Translated into CAML Query: <Joins> <ProjectedFields> <Join Type='LEFT' <Field ListAlias=‘Projects'> Name=‘ProjectTitle' <Eq> Type='Lookup' <FieldRef Name=‘Project' RefType='ID'/> List=‘Projects' ShowField='Title'/> <FieldRef List=‘Projects' Name='ID'/> </ProjectedFields> </Eq> <Query> </Join> <Where> </Joins> <FieldRef Name=‘ProjectTitle'/> <Value Type='Text'>Project1</Value> </Where> </Query>
Integrated Development Experience Visual Studio 2010 & 2008 SP1 Client library for .NET and Silverlight IDE integration, “Add Service Reference” Entity based programming Typed experience through code-gen LINQ support Updates Client Libraries for PHP, Java
REST: Master-Detail Application demo
Client Object Model REST Client OM ASP.NET WCF
Client Object Model Motivation Unified object model across all clients Removes the need for custom wrappers around SharePoint Web Services Unified object model across all clients JavaScript .Net CLR Silverlight CLR
Client Object Model Coverage Supports broad set of SharePoint objects Site operations Lists, ListItems Content Types, Fields, … But not Administration namespace, Farm objects Implemented as WCF service …/_vti_bin/client.svc Uses Web Binding for request batching
How Client Object Model Works Client Application Server Sequence of commands: Client.svc command 1; command 2; command 3; Execute commands in the batch: XML context.ExecuteQuery(); command 1; command 2; command 3; JSON Process results Send results back
Client Object Model demo
Other SharePoint Web Services Advanced Operations SharePoint Server Operations Client Object Model Advanced List Operations Site Operations Security User Profiles People Search Enterprise Metadata Document Coauthoring Excel REST web services Publishing Workflow BCS web services … see MSDN REST List data
Custom Web Services REST Client OM ASP.NET WCF
ASP.NET vs WCF ASP.NET web services are supported SOAP REST Other Bindings Simple Configuration ASP.NET WCF ASP.NET web services are supported WCF is recommended for new web services SharePoint 2007 does not support WCF directly Separate Web Application is required or Custom Virtual Path Provider/HTTP Module
ASP.NET Web Service Development SOAP The same as in SharePoint 2007 Deploy ASMX service to ISAPI folder Add ServiceWSDL.aspx and ServiceDisco.aspx files to represent WSDL of your service. REST Place ASHX request handler in ISAPI folder
? WCF Problem Solution IT Admin configures IIS Different Authentication schemes can be configured Basic, Forms, Claims, Windows Integrated, Digest, … Multiple IIS address bindings Developer configures WCF Service endpoint Solution Dynamic (Programmatic) Configuration RTM only, not available in Beta2
WCF Web Service Development SOAP Specify Service Factory in SVC file Add MEX endpoint behavior attribute to the service class BasicHttpBindingServiceMetadataExchangeEndpoint Deploy SVC service to ISAPI folder REST
WCF Service Configuration Service Type Service Factory SOAP Service MultipleBaseAddressBasicHttpBindingServiceHostFactory REST Service MultipleBaseAddressWebServiceHostFactory ADO.NET Data Service MultipleBaseAddressDataServiceHostFactory Behavior Attribute Compatible Mode [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] Enable MEX endpoint [BasicHttpBindingServiceMetadataExchangeEndpoint] Customizing WCF Endpoint Parameters SPWebService.WcfServiceSettings
Custom WCF Service demo
Details of WCF Service Configuration SharePoint Service Factory Service.svc http://server/_vti_bin/Service.svc/negotiate http://server/_vti_bin/Service.svc/ntlm http://server/_vti_bin/Service.svc/anonymous SharePoint HTTP Module HTTP POST http://server/_vti_bin/Service.svc
Key Takeaways SharePoint 2010 is designed for Services Oriented Applications New REST and Client Object Model provide easy access to SharePoint from client apps SharePoint Lists have enhanced relational capabilities WCF is supported and easy
Related Sessions Questions? FT12 ADO.NET Data Services: What's New with the RESTful Data Services Framework Pablo Castro PR02 Developing Solutions for Microsoft SharePoint Server 2010 Using the Client Object Model Mike Ammerlaan PR07 Overview of SharePoint 2010 Programmability Questions?
YOUR FEEDBACK IS IMPORTANT TO US! Please fill out session evaluation forms online at MicrosoftPDC.com
channel9.msdn.com/learn 2/24/2019 4:00 PM 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/learn Built by Developers for Developers…. © 2007 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.
2/24/2019 4:00 PM © 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.
2/24/2019 4:00 PM © 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.