SharePoint 2010 Sandbox Solutions

 

spSandboxSandbox 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

  1. Installation
  2. Aktivierung
  3. Deaktivierung
  4. 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.

spsandbox3

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)…

spsandbox2Abbildung 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)

spsandbox4

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.

spSandbox5

 

DotNetKicks-DE Image
Published Freitag, 23. Oktober 2009 21:27 von ThorstenHans
Abgelegt unter: ,

Kommentare

# SharePoint 2010 Sandbox Solutions

Samstag, 24. Oktober 2009 17:15 von dotnet-kicks.de

Sie wurden gekickt (eine gute Sache) - Trackback von dotnet-kicks.de

# Twitter Trackbacks for SharePoint 2010 Sandbox Solutions - .Net rocks [dotnet-forum.de] on Topsy.com

Ping Antwort von  Twitter Trackbacks for                 SharePoint 2010 Sandbox Solutions - .Net rocks         [dotnet-forum.de]        on Topsy.com

# Mehrfachaktionen in kontextsensitiven Ribbons als Sandboxed Solution

Sonntag, 3. Juli 2011 21:07 von discovering microsoft technologies

Mehrfachaktionen in kontextsensitiven Ribbons als Sandboxed Solution

# re: SharePoint 2010 Sandbox Solutions

Mittwoch, 15. Februar 2012 16:07 von Sehr gut

Sehr guter Beitrag, besonders der Abschnitt mit dem Scoring hat wertvolle Informationen bereit gestellt, die uns bei einem Kunden weitergeholfen hat.

Kommentar abgeben

(verpflichtend) 
(verpflichtend) 
(optional)
(verpflichtend)