In meinem letzten Blogbeitrag hab ich bereits angedeutet, dass es verschieden Möglichkeiten gibt SharePoint 2013 Apps zu hosten. Diesmal möchte ich eine kurze Zusammenfassung der Hosting Möglichkeiten geben. Das SharePoint App Model bietet drei Optionen, die man beim Entwickeln einer neuen SharePoint App bereits wissen sollte, da man sich in Visual Studio bei der Erstellung eines neuen Projekts dafür entscheiden muss.
Die drei Möglichkeiten sind:
- Provider-hosted Apps
- Autohosted Apps
- SharePoint-hosted Apps
Remote Web
Um das besser zu verstehen, muss ich an dieser Stelle den Begriff Remote Web kurz erklären.
Das Remote Web bezeichnet einen Webserver, der außerhalb der SharePoint 2013 Farm Funktionalitäten für die App zur Verfügung stellt. Es kann nicht nur eigene komplexe Funktionalitäten zur Verfügung stellen, um in einer App verwendet zu werden, sondern es kann selbst auch über das Client Side Object Modell (CSOM) den SharePoint 2013 “anprogrammieren”. Die App, d.h. die Sub-Site, die im SharePoint die App repräsentiert, verwendet in so einem Fall Webseiten des Remote Webs als Startseite. Dies wird im App-Manifest als RemoteAppUrl hinterlegt. “~remoteAppUrl” ist ein dynamischer Token, der beim Entwickeln eine Erleichterung darstellt, da man nicht ständig die URL des Remote-Webservers eingeben muss.…
<StartPage>~remoteAppUrl/Pages/Default.aspx?{StandardTokens}</StartPage>
…
Anmerkung: Das App-Manifest werde ich auch in einem der nächsten Beiträge näher beleuchten.
Das CSOM ist eine Möglichkeit SharePoint 2013 client-seitig anzuprogrammieren, wenn es sich beim Remote Web um eine ASP.NET Site handelt. Da es aber auch das JavaScript Object Modell (JSOM) und die REST API in SharePoint 2013 gibt, wäre es auch möglich mit jeder beliebigen anderen Programmiersprache, z.B. PHP oder Java die Logik zu programmieren.
Provider-hosted und Autohosted
Provider-hosted bzw. Autohosted Apps sind Varianten des selben Typs, bei dem das Remote Web entweder von einem Provider (Provider-hosted) zur Verfügung oder das Remote Web in der Azure Cloud (Autohosted) zur Verfügung gestellt wird.
SharePoint-hosted
Die Variante 3, d.h. SharePoint-hosted Apps haben kein Remote Web im Sinne der obigen Definition. Hier läuft die Logik innerhalb der SharePoint App, d.h. innerhalb der Site ab.
Das App-Manifest hat in diesem Fall folgenden Eintrag:
…
<StartPage>~appWebUrl/Pages/Default.aspx?{StandardTokens}</StartPage>
…
“~appWebUrl” ist ebenfalls ein Token, der währen der Entwicklung wichtig ist, da zu diesem Zeitpunkt die eigentliche URL noch nicht bekannt ist. Beim Installieren der App, wird dieser Token dann mit der tatsächlichen URL des Servers ersetzt.
In diesem Fall steht uns ausschließlich das JSOM und die REST API für die Programmierung zur Verfügung. Wie ich das schon in meinem letzten Blogeintrag erwähnt habe, gibt es einen fundamentalen Unterschied zwischen Apps und den bekannt WSPs, es werden keine Assemblies am SharePoint installiert, daher stehen uns Developern “nur” JavaScript oder REST als API zur Verfügung.
Nachfolgende Grafik soll den Unterschied zwischen den Hosting Möglichkeiten nochmal anzeigen. App 1 entspricht hier einer Autohosted/Provider-hosted App und App 2 entspricht der SharePoint-hosted App, die einen eigenen Workflow und eigene SharePoint Listen mitbringt:
Wichtig ist also zu wissen, dass das App Modell unterschiedliche Möglichkeiten bietet programmiert und gehostet zu werden. Vor allem zeigt sich hier auch die Möglichkeit eigene Services für Apps zur Verfügung zu stellen, die entweder selbst von einem Webserver, über eine private oder die public cloud zur Verfügung gestellt werden.
Ausblick
Nächstes Mal zeige ich eine SharePoint-hosted App, die mit NAPA erstellt wird. NAPA selbst ist bereits eine SharePoint 2013 App, die es ermöglicht für SharePoint und Office 2013 Apps zu entwickeln. Die so entwickelte App kann dann nach Visual Studio (2012/2013) geholt und richtig “aufgemotzt” werden.
Anbei noch ein paar Links, die dem interessierten Leser mehr Details liefern:
http://msdn.microsoft.com/en-us/library/office/fp179930(v=office.15).aspx
http://msdn.microsoft.com/en-us/library/office/fp179925(v=office.15).aspx
Source: New feed