sharepoint 2013 rest & odata
DESCRIPTION
Die Grundlagen zu SharePoint und der Nutzung der REST Dienste in SharePoint 2013.TRANSCRIPT
7.-8. März 2013, Rosenheim
SharePoint 2013 REST/ODATA
Einordnung in die Welt der Programmiermodelle für
SharePoint 2013
7.-8. März 2013, Rosenheim
Veranstalter:
Vorstellung• Consultant & Trainer• SharePoint, SQL Server• ASP.NET/MVC .NET-Entwicklung
• Autor• texxtoor, ehem. Hanser, Apress, S&S
• Siehe auch…• www.joergkrause.de• www.texxtoor.com
7.-8. März 2013, Rosenheim
PRINZIPIENWas und wie kann alles programmiert werden?
7.-8. März 2013, Rosenheim
Veranstalter:
Was ist neu in SP 2013?
• REST Endpunkte• Cloud Apps• Diverse neue API für Client und Server• Remote Event Receivers• Workflow 4.0• Managed Navigation• Cross Site Publishing• EDiscovery• Aktuelles .NET Framework 4.5
7.-8. März 2013, Rosenheim
Veranstalter:
Die richtige API finden
• Auswahl nach1. Anwendungsziel
Unterstützt meine Wahl das Ziel optimal und nutze ich die gelieferte Infrastruktur maximal aus?
2. KenntnisseKann ich meine Kenntnisse optimal einsetzen und erreiche ich maximale Produktivität
7.-8. März 2013, Rosenheim
Veranstalter:
Applikationsarten = API-TypenMit folgender API nutzbar: Server Client REST
WebPart X
Silverlight-Applikation X
ASP.NET, ASP.NET MVC o.ä. in einem iFrame in einer Website
X X X
JavaScript-Anwendung X X
SharePoint-Applikationsseite (Layout-Page) X
.NET im Client-Computer (WinForms, WPF, Console)
X X
Powershell-Script auf Server X
Powershell-Script auf Client X
Timer-Job im SharePoint Server X
7.-8. März 2013, Rosenheim
API "Big Picture"
Server Object Model
PowerShell Script Timer Job
SilverlightClient API
Web Parts
ASP.NET SP 2013 Apps
HTML/JavaScript
Office App
REST/ODATA Services
JavaScriptAPI
MobileSilverlight API
.NET Client Object Model
iOS/Android Apps
LAMP Web Applikation
Windows Phone
WinForms, WPF
7.-8. März 2013, Rosenheim
Veranstalter:
Mächtigkeit versus Flexibilität
Server APIAlle Bausteine programmierbarLINQ to SharePoint-Abfragen
Client Side Object Model (CSOM)REST/ODATA
Mäc
htige
rFlexibler
7.-8. März 2013, Rosenheim
Veranstalter:
Server API
• Am leistungsfähigsten = Immer gut?– Nein, weil remote manchmal einfacher ist:• Runterladen der Logik zum Client (down)• JavaScript im Client, Silverlight, WinForms/WPF • Hochladen der Logik in die Cloud (up)• Server hosted, ASP.NET, Azure
– Immer remote? Nein, weil komplexer durch Authentifizierung usw.
7.-8. März 2013, Rosenheim
Veranstalter:
Client Side Object Model
• Silverlight– Webpart, Web Applikation
• .NET– Winforms, WPF, Azure Web Role, ASP.NET auf
externem Server• Mobile– Windows Phone Silverlight
7.-8. März 2013, Rosenheim
Veranstalter:
JavaScript Object Model
• Teil des Client Side Object Model• Geräte- und technologieunabhängig• *.js-Dateien auf jeder Maschine
7.-8. März 2013, Rosenheim
Veranstalter:
Wie hängt das zusammen?
• In 2010: – REST _vti_bin/listdata.svc– CSOM _vti_bin/client.svc
• In 2013: – REST kompatibel wie bisher: listdata.svc– CSOM hat einen weiteren Odata Endpunkt: • _vti_bin/client.svc/web• _api/web als allgemeiner Alias
7.-8. März 2013, Rosenheim
Veranstalter:
Vor-/Nachteile
• client.svc ist vollständiger als listdata.svc• client.svc erzeugt derzeit noch keine
Metadaten, sodass diverse Tools nicht gehen, z.B. LinqPad
7.-8. März 2013, Rosenheim
REST / ODATASchwerpunktthema
7.-8. März 2013, Rosenheim
Veranstalter:
Warum nun REST?
• Weite Verbreitung• Gut dokumentiert• Einfacher als SOAP• Perfekt mit JavaScript und (ggf.) jQuery• JSON oder ATOM (XML)
7.-8. März 2013, Rosenheim
Veranstalter:
REST/ODATA
• Grundlagen siehe www.odata.org• Wenn JavaScript nicht verfügbar oder nicht
passend• Clients anderer Plattformen, z.B. iOS, Android,
Java o.ä.
7.-8. März 2013, Rosenheim
• REST = Representational State Transfer– Kein Standard, sondern Architekturstil– Basiert aber auf Standards:• HTTP, URI, XML/HTML, MIME
– Merkmale:• Skalierbar• Allgemeingültig• Erweiterbar
Was ist REST?
7.-8. März 2013, Rosenheim
REST HTTP Client
(z.B. Browser)Web Server Datenbank
SharePoint
<Where> <Eq> <Field Name="ISBN"> <Value>346</Value> </Eq></Where>
INSERTINTO orders
UPDATE ordersWHERE id=2605
GET/book?ISBN=346
POST/order
301 Location:/order/2605
PUT/order/2605
7.-8. März 2013, Rosenheim
Veranstalter:
REST und ODATA
• ODATA = Data Access API• Standardisierte CRUD-Operatoren
• ODATA beschreibt Entity Data Model
7.-8. März 2013, Rosenheim
Veranstalter:
ODATA KonzepteODATA Ressource In EDM beschrieben als
Collection Set aus Entitäten
Entry Entitäten Typ
Property Primitive oder komplexe Typ-Eigenschaft
Complex Type Komplexer Typ
Link Navigations-Eigenschaft innerhalb des Typs
Operation Funktion
7.-8. März 2013, Rosenheim
• GET– Ressource laden– Ohne Seiteneffekte, Sicher– Unterstützt Cache
• POST– Neue Ressource erzeugen– Keine 100% klare Spezifikation in HTTP, Unsicher
• PUT– Aktualisierung einer Ressource– Client muss exaktes Ziel kennen– Idempotent gleich Aktion führt immer zum selben Ergebnis
• DELETE– Entfernt eine Ressource– Idempotent gleich Aktion führt immer zum selben Ergebnis
ODATA Mapping
7.-8. März 2013, Rosenheim
• Methoden werden gemappt in – Navigations-Operationen
web.getByTitle GET
– Service-Operationen
POST, PUT, MERGE, DELETE
ODATA Mapping
7.-8. März 2013, Rosenheim
Veranstalter:
Beispiele
• http://site url/_api/web/…• _api/web/lists• _api/web/lists/listname• _api/web/lists(guid)• _api/web/lists/getByTitle('Name')
7.-8. März 2013, Rosenheim
Veranstalter:
REST (JQuery)
jQuery.ajax({ url: "http://site url/_api/web/lists”, type: "GET", headers: { "ACCEPT": "application/json;odata=verbose",
"Authorization": "Bearer " + accessToken }, })
7.-8. März 2013, Rosenheim
Veranstalter:
REST (cross-domain lib)
var executor = new SP.RequestExecutor(appweburl); executor.executeAsync( { url: appweburl + "/_api/SP.AppContextSite(@target)/web/lists?@target='" + hostweburl + "'", method: "GET", headers: { "Accept": "application/json; odata=verbose" }, success: successHandler, error: errorHandler } );
7.-8. März 2013, Rosenheim
Veranstalter:
REST (C#)
HttpWebRequest endpointRequest = (HttpWebRequest)HttpWebRequest.Create(sharepointUrl.ToString() + "/_api/web/lists");
endpointRequest.Method = "GET"; endpointRequest.Accept = "application/json;odata=verbose"; endpointRequest.Headers.Add("Authorization", "Bearer " + accessToken); HttpWebResponse endpointResponse =
(HttpWebResponse)endpointRequest.GetResponse();
7.-8. März 2013, Rosenheim
Veranstalter:
OAuth
• Offenes Protokoll für– Authentifizierung– Autorisierung
• Basiert auf TLS – Transport Layer Security– Im Wesentlichen: HTTPS
7.-8. März 2013, Rosenheim
Veranstalter:
OAuth in SP 2013
• OAuth erlaubt es einem Benutzer, einen Service Provider zu autorisieren, ein Sicherheitstoken (Hash) herauszugeben, anstatt Benutzername und Kennwort
• Der Service Provider ist hier der Secure Token Service in SharePoint 2013
7.-8. März 2013, Rosenheim
Veranstalter:
OAuth in SP 2013
• Token erlaubt Zugriff auf– Bestimmte Site– Bestimmte Ressourcen der Site– Für eine bestimmte Zeitdauer
• Damit wird dritten Instanzen der Zugriff ebenso erlaubt, wenn diese den Token benutzen
• Diese „dritte Instanz“ ist z.B. eine App
7.-8. März 2013, RosenheimAblauf
7.-8. März 2013, Rosenheim
BEISPIELE
7.-8. März 2013, Rosenheim
Veranstalter:
Beispiele
1. REST/ODATA – JQuery-Applikation2. CSOM – Client Object Model3. Server API – Console4. Server API – LayoutPage in SP5. Client Object Model als App
7.-8. März 2013, Rosenheim
FRAGEN?
7.-8. März 2013, Rosenheim
Vielen Dank!Jörg Krause
www.joergkrause.de