Überlegungen zu Sandkastenlösungen
Sandkastenlösungen sind ein Feature in Microsoft SharePoint 2010, mit dem Websitesammlungsbenutzer ihre eigenen benutzerdefinierten Codelösungen hochladen können. Eine gängige Sandkastenlösung ist das Hochladen eigener Webparts durch Benutzer.
Eine SharePoint-Sandkastenanwendung wird in einem sicheren, überwachten Prozess ausgeführt, der Zugriff auf einen begrenzten Teil der Webfarm hat. Microsoft SharePoint 2010 verwendet eine Kombination aus Features, Lösungskatalogen, Lösungsüberwachung und einem Validierungsframework, um Sandkastenlösungen zu ermöglichen.
Angeben der Projektvertrauensebene
Visual Studio unterstützt Sandkastenlösungen über eine boolesche Projekteigenschaft namens Sandkastenlösung. Diese Eigenschaft kann jederzeit im Projekt festgelegt oder beim Erstellen des Projekts im Assistenten zum Anpassen von SharePoint angegeben werden.
Hinweis
Das Ändern der Eigenschaft Sandkastenlösung eines Projekts nach seiner Erstellung kann zu Validierungsfehlern führen.
Die Lösung gilt als Lösung mit Farmumfang, wenn die Eigenschaft Sandkastenlösung auf false festgelegt ist oder Sie die Option Als Farmlösung bereitstellen auswählen. Die Lösung wird jedoch anders als eine Farmlösung behandelt, wenn die Eigenschaft Sandkastenlösung auf true festgelegt ist oder Sie im Assistenten die Option Als Sandkastenlösung bereitstellen auswählen.
SharePoint-Websitehierarchie
Um zu verstehen, wie Sandkastenlösungen funktionieren, hilft die Kenntnis, dass der Bereich von SharePoint-Websites hierarchisch organisiert ist. Das oberste Element wird als Webfarm bezeichnet, und ihm sind andere Elemente untergeordnet:
Webfarm
Webanwendung A
Websitesammlung A1
Website A1a
Webanwendung B
Websitesammlung B1
Website B1a
Website B1b
Websitesammlung B2
Website B2a
Wie Sie sehen, können Webfarmen eine oder mehrere Webanwendungen enthalten, die wiederum eine oder mehrere Websitesammlungen enthalten können, die Unterwebsites enthalten können usw. Änderungen, die an einer Websitesammlung vorgenommen werden, wirken sich nur auf diese Websitesammlung und keine andere aus. Änderungen, die auf Webfarmebene vorgenommen werden, wirken sich jedoch auf alle Websitesammlungen in der Farm aus.
Windows SharePoint Services (WSS) 3.0 ermöglicht es Ihnen, Lösungen nur auf Farmebene bereitzustellen, aber mit Microsoft SharePoint Foundation können Sie entweder auf Farmebene (Farmlösung) oder auf Websitesammlungsebene (Sandkastenlösung) bereitstellen.
Gründe für Sandkastenlösungen
In WSS 3.0 konnten Lösungen nur auf Farmebene bereitgestellt werden. Dies bedeutete, dass potenziell schädliche oder destabilisierende Lösungen bereitgestellt werden konnten, die sich auf die gesamte Webfarm und alle anderen Websitesammlungen und Anwendungen auswirkten, die darunter ausgeführt wurden. Mithilfe von Sandkastenlösungen können Sie Ihre Lösungen jedoch in einem Teilbereich der Farm, einer bestimmten Websitesammlung, bereitstellen. Um zusätzlichen Schutz zu bieten, wird die Assembly der Lösung nicht in den IIS-Hauptprozess (w3wp.exe) geladen. Stattdessen wird sie in einen separaten Prozess (SPUCWorkerProcess.exe) geladen. Dieser Prozess wird überwacht und implementiert Kontingente sowie Drosselung, um die Farm vor Sandkastenlösungen zu schützen, die schädliche Aktivitäten ausführen, z. B. das Ausführen enger Schleifen, die CPU-Zyklen verbrauchen.
Lösungskatalog der Websitesammlung
Windows SharePoint Services 2010 verfügt über ein Feature, das als „Lösungskatalog der Websitesammlung“ bezeichnet wird. Sie können über die Seite der SharePoint 2010-Zentraladministration auf diese Funktion zugreifen, oder indem Sie das Menü Websiteaktionen öffnen, Websiteeinstellungen auswählen und dann den Link Lösungen unter Kataloge auf der SharePoint-Website auswählen. Lösungskataloge sind Repositorys mit Lösungen, mit denen Websitesammlungsadministratoren Lösungen in ihren Websitesammlungen verwalten können.
Der Lösungskatalog ist eine Dokumentbibliothek, die im Stammweb der SharePoint-Website gespeichert ist. Der Lösungskatalog ersetzt Websitevorlagen und unterstützt Lösungspakete. Wenn eine SharePoint-Lösungspaketdatei (WSP) hochgeladen wird, wird sie als Sandkastenlösung verarbeitet.
Einschränkungen für Sandkastenlösungen
Wenn eine Sandkastenlösung bereitgestellt wird, wird das Array der für die Lösung verfügbaren SharePoint-Funktionalitäten eingeschränkt, um mögliche Sicherheitsrisiken zu verringern. Einige dieser Einschränkungen umfassen Folgendes:
Sandkastenlösungen steht eine eingeschränkte Teilmenge von bereitstellungsfähigen Lösungselementen zur Verfügung. Potenziell anfällige SharePoint-Projektvorlagen wie 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.
Dem Projekt können keine zugeordneten Ordner hinzugefügt werden.
Typen aus der Microsoft SharePoint Server-Assembly „Microsoft.Office.Server“ können nicht in Sandkastenlösungen verwendet werden. Außerdem können nur Typen aus der Microsoft SharePoint Foundation-Assembly „Microsoft.SharePoint“ in Sandkastenlösungen verwendet werden.
Es ist wichtig zu beachten, dass die Angabe einer SharePoint-Lösung als Sandkastenlösung keine Auswirkungen auf den SharePoint-Server hat. Dadurch wird nur bestimmt, wie das SharePoint-Projekt von Visual Studio in SharePoint bereitgestellt und an welche Assemblys es gebunden wird. Dies wirkt sich nicht auf die generierte WSP-Datei aus, und die WSP-Datei enthält keine Daten, die direkt mit der Eigenschaft Sandkastenlösung korrelieren.
Funktionen und Elemente in Sandkastenlösungen
Sandkastenlösungen unterstützen die folgenden Funktionen und Elemente:
Inhaltstypen/Felder
Benutzerdefinierte Aktionen
Deklarative Workflows
Ereignisempfänger
Funktionslegenden
Definitionen auflisten
Listeninstanzen
Modul/Dateien
Navigation
Onet.xml
SPItemEventReceiver
SPListEventReceiver
SPWebEventReceiver
Unterstützung für alle Webparts, die von
System.Web.UI.WebControls.WebParts.WebPart
abgeleitet werdenWebparts
WebTemplate-Featureelemente (anstelle von Webtemp.xml)
Visuelle Webparts
Sandkastenlösungen unterstützen die folgenden Funktionen und Elemente nicht:
Anwendungsseiten
Benutzerdefinierte Aktionsgruppe
Funktionen mit Farmumfang
HideCustomAction
-ElementFunktionen mit Webanwendungsumfang
Workflows mit Code