blog.atwork.at

news and know-how about microsoft, technology, cloud and more.

OfficeApps entwickeln-Teil 2 SharePoint Apps

In Teil 1 habe ich über das Grundgerüst von OfficeApps geschrieben, über die Anatomie einer App und wie sie gehostet werden kann. Grundsätzlich gelten dieselben Regeln für OfficeApps und SharePointApps. Aufgrund der SharePoint 2013 Development-Plattform gibt es aber natürlich einige Besonderheiten für SharePointApps. Auf einige davon möchte ich in diesem Artikel eingehen.

Napa

Mit Codenamen zeigt Microsoft Mut zu ... Getränken. Ist euch schon aufgefallen, dass die Codenamen fast immer mit Getränken zu tun hatten? So auch bei Napa, der wohl populärsten Weinregion in den USA (siehe wikipedia.org).

Napa steht für eine webbasierte IDE zur Erstellung von Office und SharePoint Apps und kann im SharePoint App Store bezogen werden.

napa-start

Um Napa zu nutzen, muss die SharePoint Website das Template Developer Site verwenden.

Die Entwicklungsumgebung für die erste SharePointApp sieht dann so aus: In einem Online-Editor (also im Browser!) können die einzelnen Dateien des App-Projekts bearbeitet werden. Dabei unterstützt die IDE auch Syntax und IntelliSense.

Das Standardprojekt liest den aktuellen Usernamen aus und zeigt diesen in der SharePointApp an. Auch wenn die HTML-Webseite Default.aspx heißt, ist sie keine "echte" ASPX-Seite, es gibt hier keinen serverseitigen Code (siehe Teil 1). Die Arbeit erfolgt in App.js, der vorkonfigurierten Javascript-Seite, die in Default.aspx inkludiert wird.

napa-first-app

Hier sieht man sehr schön die asynchronen Calls - so müssen die Funktionsaufrufe erfolgen.

Die App wird in der linken unteren Ecke gestartet (die anderen Funktionen sind Stoff für einen weiteren, detaillierten Artikel über die Entwicklung von SharePointApps...):

napa-run

...und präsentiert sich nach dem Deployment-Prozess

napa-deploy

...in einem App Web:

napa-app

Napa öffnet für die App ein eigenes Browserfenster.

Jede Änderung im Code erfordert ein neues Deployment - wie schon in SP 2010 gewohnt.

Das Beispiel zeigt somit, dass man sich als Developer mit Napa nicht um Security und ähnliches kümmern muss - die App wird in SharePoint gehostet und läuft automatisch im Kontext des SharePoint-Webs. Über die eingebundenen Bibliotheken ist genauso der Zugriff auf SharePoint-Listen möglich, dazu später ein eigenes Demo.

Um Napa zu nutzen muss man sich auf der Website Sign up for an Office 365 Developer Site registrieren und mit einem Microsoft Konto eine eigene Office 365 Developer SIte eröffnen. Die genaue Vorgangsweise zum Erstellen von SharePoint Apps werden wir uns in einem späteren Artikel ansehen.

Pro App ein eigenes App Web

Die Website, wo die App bereitgestellt wird, wird als Host Web bezeichnet.

Für SharePoint Apps erstellt SharePoint für jede App automatisch ein eigenes App Web.

Hier läuft die App in einem isolierten Bereich, also sandboxed. Die URL des App Webs lautet dann zum Beispiel so:

https://atworkat-3740fce2e0d478.sharepoint.com/ListDemo1/Pages/Default.aspx?SPHostUrl=...

Die App-ID wird an die domain atworkat als eigene Subdomain angehängt. Weitere Parameter übergeben verschiedene Werte in die App, zum Beispiel SPAppWebUrl, SPLanguage, SPHostUrl, etc. Diese werden zur Laufzeit durch Standard-Token von SharePoint ersetzt, die sicherstellen, dass der Kontext valide ist und eine Kommunikation zwischen App und SP möglich ist, siehe {StandardTokens} in  URL strings and tokens in apps for SharePoint

Weitere Neuerungen in SP 2013

Im Unterschied zu SharePoint 2010 wird in SharePoint 2013 das client.svc Service mit REST-Funktionen erweitert. Das Service unterstützt nun direkte Aufrufe von REST Clients, es akzeptiert HTTP GET, PUT und POST Requests und wurde nach dem OData Protokoll gebaut.

Microsoft hat sich also von SOAP zugunsten von REST verabschiedet. REST bietet eine einfachere Schnittstelle, die bequem per Javascript und jQuery im JSON und ATOM-Format über jeweils eigene URLs abgerufen werden kann. Die Ergebnisse können über einen Proxy Server ge-chacht werden, das Handling ist einfacher u.v.m.

Das Client Side Object Model (CSOM) wurde um neue APIs für SharePoint Server Funktionen und für Windows Phone Applications erweitert (siehe u.a. How to: Complete basic operations using SharePoint 2013 client library code und What's new in SharePoint 2013 CSOM).

In SharePoint Foundation 2013 gab es keine großen Änderungen in CSOM abseits der REST Unterstützung. In SharePoint Server 2013 wurden jedoch in CSOM und den REST APIs alle SharePoint Funktionen wie Search, Sharing, Social, Publishing, Taxonomy, eDiscovery, Workflows, IRM, Analytics, BCS und noch viel mehr abgebildet.

sharepoint-app-new-api_thumb[4]

Neu ist auch der Alias _api für den client.svc Dateinamen in der URL, dieser vereinfacht die URL:
Statt der URL http://contososerver/_vti_bin/client.svc/web kann in SP 2013 diese URL http://contososerver/_api/web verwendet werden.

Objekt-Ressourcen können zum Beispiel so über REST URLs aufgerufen werden:

_api/web/lists
_api/web/lists/getByTitle('Announcements')
_api/web/getAvailableWebTemplates(lcid=1033)

SP 2013 verwendet für Authentifizierung nun (endlich!) das OAuth-Modell, siehe Authorization and authentication for apps in SharePoint 2013 und OAuth and the Rehydrated User in SharePoint 2013 - How'd They do That and What do I Need to Know sowie die Videos oAuth authentication in SharePoint 2013 und SharePoint 2013 OAuth implementation. Dies vereinfacht die Authentifizierung erheblich, vor allem gegen SP in Office 365 (wer sich - so wie ich - mit Claimed Based Authentication gegen SPO herumgeschlagen hat, weiß wovon ich spreche...).

Die Entwicklung mit dem neuen App Modell wird viele SharePoint Developer freuen. Hiermit fallen auch alle technischen Beschränkungen von sandboxed solutions und die Entwicklung von eigenen Lösungen wird wesentlich vereinfacht.

Es gibt natürlich noch sehr viel über SharePoint 2013 und SharePointApps zu berichten. Fürs erste begnügen wir uns mit diesem kurzen Ausblick und sehen uns in weiterer Folge an, wie man eine eigene OfficeApp erstellt!

OfficeApps Serie:

Loading