Sandbox Solutions für SharePoint 2010! Einige werden sich fragen was Sandbox Solutions sind… nun kurz erklärt sind Sandbox Solutions Applikationen oder “Lösungen” die in einer isolierten Umgebung laufen, durch diese Isolierung kann gewährleistet werden, dass falls Probleme mit der neuen Komponente bestehen nicht die Gesamtanwendung (SharePoint in diesem Fall) in die Knie geht.
Sandbox Solutions für SharePoint 2010 können sowohl deklarative als auch codebasierte Lösungen beinhalten. Sandbox Solutions werden an eine bestimmte Stelle deployt im neuen SharePoint, nämlich in die Solution Gallery. Die Solution Gallery befindet sich neben einigen weiteren Galleries in den Site Settings.
Sandbox Solutions werden von Benutzern ab der Rechteebene Site Collection Administrator verteilt.
Welche SPI’s können in eine Sandbox Solution?
Wie bereits erwähnt können sowohl deklarative als auch codebasierte Elemente bei Sandbox Solutions verwendet werden! Dennoch hier ein Auszug der erlaubten Elemente
- WebParts
- Listen
- List-Templates
- Custom Actions
- Workflows
- Event Receivers
- Content Types
- Site Columns
- …
Lebenszyklus einer Sandbox Solution
Der Lebenszyklus einer Sandbox Solution besteht aus vier einfachen Schritten, die sich beim ersten Blick! nicht von dem Lebenszyklus unterscheiden
- Installation
- Aktivierung
- Deaktivierung
- Deinstallation
Wichtig zu wissen ist, dass Sandbox Solutions vor der Installation validiert werden, die vorhandenen Validierungsregeln können erweitert, beziehungsweise durch eigene ersetzt werden!
Nach der Installation einer Solution wird diese automatisch aktiviert. Außerdem benötigen Sandbox Solutions weder einen recycle vom Application-Pool noch einen IIS reset! Gerade früh im Entwicklungsprozess kann dies enorm viel Zeit sparen :)
Was nicht in der Sandbox Solution vorhanden sein darf!
Natürlich muss es in einer Sandbox auch Restriktionen geben, so auch bei der SharePoint Sandbox :)
Nachfolgende Dinge sind in Sandbox Solutions nicht erlaubt
- Deployment in den GAC
- Verwendung von SPSecurity
- Verwendung von Objekten Oberhalb von SPSite (Beispiel SPFarm)
Abbildung 1 zeigt den Raum, in dem sich Sandbox Solutions bewegen.

Abbildung 1: Scope einer Sandbox Solution
Automatisches Deaktivieren einer Solution (Solution Quotas)
Per default sind in SharePoint verschiedene Richtlinien definiert nach denen Sandbox Solutions automatisch deaktiviert werden. Hierfür hat sich Microsoft ein einfaches Punktesystem ausgedacht.
Maximal dürfen Sandbox Solutions 300 Punkte bekommen, wenn die Punkteverwendung darüber geht wird die Solution deaktiviert. Neben den gerade genannten 300 Punkten gibt es noch maximale Quotas auf Tagesebene (Bsp. 90 Punkte pro Tag)…
Abbildung 2: Solution Gallery
Ein einfaches Beispiel sind zum Beispiel Exceptions, nicht gefangene Exceptions werden dementsprechend gewertet, so dass die Solution je nach Konfiguration des Servers 5 Exceptions werfen darf bevor diese deaktiviert wird.
Wenn die Solution eine GUI Komponente beinhaltet und die Quota erreicht wird (klassisches Beispiel hierfür ist ein WebPart), wird an dessen Stelle eine Warnung dargestellt.
Über die Zentraladministration können auch Benachrichtigungsgrenzen für das Erreichen der Quotas eingerichtet werden, so das Site Collection Administratoren immer auf dem aktuellen Stand sind.
Wichtiger Hinweis für die Verwendung des Objekt Models in Sandbox Solutions
Wie bereits erwähnt dürfen nicht alle Klassen des SharePoint Objekt Modells in Sandbox Solutions verwendet werden. Das SharePoint Team hat hierzu einen “abgespeckten” Proxy vor das eigentliche SharePoint Objekt Modell gesetzt, der zur Laufzeit nur die erlaubten Typen zur Verfügung stellt.
Soweit so gut! Denke jetzt bestimmt einige, jedoch gibt es bei diesem Ansatz noch ein Problem. In Visual Studio 2010 werden die nicht erlaubten Typen im IntelliSense lediglich ausgeblendet, kopiert man jedoch ein Snippet in den CodeEditor, dann bringt Visual Studio weder einen Kompilierungsfehler noch eine Kompilierungswarnung. Das bedeutet, dass solche Probleme erst zur Laufzeit auffallen!!
Zur Laufzeit generiert SharePoint demnach eine Exception, hingegen der allgemeinen Meinung wird jedoch keine SecurityException sondern eine Method- oder TypeNotFoundException. Daher gilt insbesondere bei Sandbox Solutions “Vorsicht bei Copy ‘n’ Paste”.
Der Unterschid liegt im Detail
Wenn man mit Visual Studio eine neue SharePoint Solution erstellt, wird man durch einen Dialog aufgefordert anzugeben ob man eine Sandbox oder eine Fulltrust Solution erstellt. (Siehe Abbildung 3)
Keine Angst, dies ist keine Einstellung für die Ewigkeit, sondern nur eine Property auf dem SharePoint Projekt, die man direkt von Hand ändern kann. Ansonsten gibt es auf Code Ebene keinen Unterschied zwischen Fulltrust und Sandbox, denn der eigentliche Unterschied liegt nur im Deployment!!
Abbildung 4 zeigt nochmals die entsprechende Einstellung auf Projektebene.