Überlegungen zu Sandkastenlösungen
Sandkastenlösungen sind eine Funktion in Microsoft SharePoint 2010, die es Websiteauflistungsbenutzern ermöglicht, eigene benutzerdefinierte Codeprojektmappen hochzuladen. Bei einer gängigen Sandkastenlösung laden Benutzer eigene Webparts hoch.
Eine SharePoint-Sandkastenanwendung wird in einem sicheren überwachten Prozess ausgeführt, der Zugriff auf einen beschränkten Teil der Webfarm hat. Microsoft SharePoint 2010 aktiviert Sandkastenlösungen mithilfe einer Kombination aus Funktionen, Lösungskatalogen, Lösungsüberwachung und einem Validierungsframework.
Angeben der Projektvertrauensebene
Visual Studio unterstützt Sandkastenlösungen durch eine boolesche Projekteigenschaft mit dem Namen Sandboxed Solution. Diese Eigenschaft kann im Projekt jederzeit festgelegt oder dann angegeben werden, wenn Sie das Projekt im Assistenten zum Anpassen von SharePoint erstellen.
Tipp
Wenn die Eigenschaft Sandboxed Solution eines Projekts nach seiner Erstellung geändert wird, kann dies Validierungsfehler verursachen.
Wenn die Eigenschaft Sandboxed Solution auf false festgelegt ist oder Sie die Option Als Farmlösung bereitstellen auswählen, gilt eine Farm als Gültigkeitsbereich für die Lösung. Wenn die Eigenschaft Sandboxed Solution jedoch auf true festgelegt ist oder Sie im Assistenten die Option Als Sandkastenlösung bereitstellen auswählen, wird die Lösung nicht wie eine Farmlösung behandelt.
SharePoint-Websitehierarchie
Die Funktionsweise von Sandkastenlösungen wird verständlicher mit dem Wissen, dass SharePoint-Websitebereiche hierarchisch sind. Das oberste Element wird als Webfarm bezeichnet, und andere Elemente sind diesem Element untergeordnet:
Webfarm
Webanwendung A
Websiteauflistung A1
Website A1a
Webanwendung B
Websiteauflistung B1
Website B1a
Website B1b
Websiteauflistung B2
Website B2a
Webfarmen können eine oder mehrere Webanwendungen enthalten, die wiederum eine oder mehrere Websiteauflistungen enthalten können, die über Unterwebsites verfügen können, usw. Änderungen an einer Websiteauflistung wirken sich nicht auf andere Websiteauflistungen aus. Änderungen auf Webfarmebene wirken sich jedoch auf alle Websiteauflistungen der Webfarm aus.
Mit Windows SharePoint Services 3.0 (WSS) können Sie Lösungen nur auf Farmebene bereitstellen, aber mit Microsoft SharePoint Foundation 2010 ist die Bereitstellung entweder auf Farmebene (Farmlösung) oder auf Websiteauflistungsebene (Sandkastenlösung) möglich.
Gründe für die Verwendung von Sandkastenlösungen
In WSS 3.0 konnten Lösungen nur auf Farmebene bereitgestellt werden. Das bedeutet, dass potenziell schädliche oder destabilisierende Lösungen bereitgestellt werden konnten, die sich auf die gesamte Webfarm sowie auf alle weiteren Websiteauflistungen und Anwendungen auswirkten, die darunter ausgeführt wurden. Bei Sandkastenlösungen können Sie Lösungen jedoch in einem Unterbereich der Farm, einer spezifischen Websiteauflistung, bereitstellen. Um zusätzlichen Schutz zu bieten, wird die Assembly der Lösung nicht im IIS-Hauptprozess (w3wp.exe) geladen. Stattdessen wird sie in einem separaten Prozess geladen (SPUCWorkerProcess.exe). Dieser Prozess wird überwacht und implementiert Kontingente und Einschränkungen, um die Farm vor Sandkastenlösungen zu schützen, die schädliche Aktivitäten ausführen, z. B. geschlossene Schleifen, die CPU-Zyklen verbrauchen.
Lösungskatalog für Websiteauflistungen
Windows SharePoint Services 2010 beinhaltet eine als "Lösungskatalog für Websiteauflistungen" bezeichnete Funktion. Diese ist auf der Seite Zentraladministration von SharePoint 2010 verfügbar oder indem Sie auf der SharePoint-Website auf Websiteaktionen, auf Websiteeinstellungen, auf Galerien und dann auf Lösungen klicken. Lösungskataloge sind Repositorys von Lösungen, die es Websiteauflistungsadministratoren ermöglichen, Lösungen in ihren Websiteauflistungen zu verwalten.
Der Lösungskatalog ist eine im Stammweb der SharePoint-Website gespeicherte Dokumentbibliothek. Der Lösungskatalog ersetzt Websitevorlagen und unterstützt Lösungspakete. Eine hochgeladene SharePoint-Lösungspaketdatei (.wsp) wird als Sandkastenlösung verarbeitet.
Einschränkungen von Sandkastenlösungen
Wenn eine Sandkastenlösung bereitgestellt wird, ist das verfügbare Array von SharePoint-Funktionen beschränkt, um potenzielle Sicherheitslücken zu verringern. Einige dieser Beschränkungen schließen Folgendes ein:
Für Sandkastenlösungen steht eine eingeschränkte Teilmenge von zur Bereitstellung geeigneter Lösungselemente zur Verfügung. Potenziell anfällige SharePoint-Projektvorlagen, z. B. Websitedefinitionen und Workflows, sind nicht verfügbar.
SharePoint-führt Sandkastenlösungscode in einem Prozess (SPUCWorkerProcess.exe) aus, der vom Hauptprozess des IIS-Anwendungspools (w3wp.exe) getrennt ist.
Zugeordnete Ordner können dem Projekt nicht hinzugefügt werden.
Typen in der Microsoft SharePoint Server 2010-Assembly Microsoft.Office.Server können nicht in Sandkastenlösungen verwendet werden. Darüber hinaus können nur Typen in der Microsoft SharePoint Foundation 2010-Assembly Microsoft.SharePoint in Sandkastenlösungen verwendet werden.
Beachten Sie, dass das Festlegen einer SharePoint-Lösung als Sandkastenlösung keine Auswirkungen auf SharePoint-Server hat. Hierdurch wird lediglich bestimmt, wie das SharePoint-Projekt von Visual Studio in SharePoint bereitgestellt wird und an welche Assemblys es gebunden wird. Die generierte WSP-Datei wird dadurch nicht beeinflusst. Sie enthält keine Daten, die mit der Eigenschaft Sandboxed Solution zusammenhängen.
Funktionen und Elemente in Sandkastenlösungen
Sandkastenlösungen unterstützen die folgenden Funktionen und Elemente:
Listendefinitionen
Listeninstanzen
Onet.xml
WebTemplate-Funktionselemente (anstelle von Webtemp.xml)
Inhaltstypen/Felder
Navigation
Module/Dateien
Ausgehende Funktionsaufrufe
Webparts
Unterstützung für alle von System.Web.UI.WebControls.WebParts.WebPart abgeleiteten Webparts
Ereignisempfänger
SPItemEventReceiver
SPListEventReceiver
SPWebEventReceiver
Benutzerdefinierte Aktionen
Deklarative Workflows
Sandkastenlösungen bieten keine Unterstützung für die folgenden Funktionen und Elemente:
Visuelle Webparts
Anwendungsseiten
Benutzerdefinierte Aktionsgruppe
HideCustomAction-Element
Inhaltstypbindung
Funktionen mit dem Gültigkeitsbereich Webanwendung
Funktionen mit dem Gültigkeitsbereich Farm
Workflows mit Code