08.02.2010, 18:34 Uhr

SharePoint 2010-Solutions in einer Sandbox

Mit den Sandboxed Solutions führt Microsoft in SharePoint 2010 ein neues Deployment-Modell ein, bei dem eigener Code mit einem höheren Isolationsgrad, mehr Sicherheit und einem Monitoring-System ausgeführt werden kann. Eigene Anwendungen können dadurch in Serverfarmen und gehosteten SharePoint-Angeboten eingesetzt werden, ohne die Stabilität des Gesamtsystems zu gefährden.
von Urs BertschyDer Einsatz von SharePoint Solutions (WSPs) litt bislang unter einem gewichtigen Nachteil: Eine solche Lösung konnte in SharePoint 2007 nur auf der Ebene einer Serverfarm installiert und ausgeführt werden. Schlechter Programmcode konnte sich dadurch auf die Stabilität, Performance und Sicherheit der gesamten Farm auswirken und mussten daher vor dem Einsatz in der produktiven Umgebung erst intensiven und zeitraubenden Tests unterzogen werden. Auf Sicherheit bedachte SharePoint-Administratoren erlaubten den Einsatz von derartigen Erweiterungen meist nur in Ausnahmefällen oder gar nicht. Bei gehosteten SharePoint-Umgebungen und Cloud-Angeboten wie SharePoint Online war der Einsatz von selbstgeschriebenen Anwendungen aufgrund des Sicherheitsrisikos und mangels geeigneter Deployment-Mechanismen von vornherein ausgeschlossen. Sandbox SolutionsZu den vielen Neuerungen von SharePoint 2010 gehören auch die Sandboxes Solutions. Es handelt sich um eine reguläre SharePoint Solution (WPS), nur dass diese auf der Ebene der einer Site Collection bereitgestellt und dort isoliert in einem eigenen Prozess (SPUCWorkerprocess.exe anstelle von W3wp.exe) ausgeführt wird. Das Deployment der Lösung wird über die Solution Gallery der Site Collection vollzogen.Das entsprechende WSP-File wird über die SharePoint-UI hochgeladen und dort aktiviert - mehr ist nicht zu tun.Das einfache Handling über die Web-UI soll nicht nur SharePoint-Administratoren in firmeninterne Umgebungen die Arbeit erleichtern, sondern adressiert auch gehostete SharePoint-Angebote. Insbesondere bei dem für Ende Sommer vorgesehenen Release von SharePoint 2010 in Gestalt von SharePoint Online ist die Sandbox ein zentrales Element, da sie Unternehmen ermöglichkeit, eine in der Cloud gehostete SharePoint-Umgebung mit eigenem Code zu erweitern. Ein weiterer Vorteil: Über das Sandboxing lässt sich die Verwaltung von Solutions an die Administratoren von Site Collections delegieren, der Farm Administrator wird entlastet. Abbildung 1: Sandboxed Solutions werden über die Solution Gallery einer Site Collection hochgeladen und aktiviert SharePoint-Anwendungen überwachenUm sich schlecht verhaltende SharePoint-Anwendungen erkennen und gegebenenfalls eliminieren zu können, verfügt SharePoint 2010 über ein neues punktebasiertes Monitoring System, mit dem die Ressourcen des Systems anhand von 14 Messwerten (Prozess-Abbrüche, CPU-Nutzung, Datenbankzugriffe etc.) während der Ausführung in der Sandbox überwacht werden [1]. Jedes Mal, wenn eine Anwendung den Schwellwert einer dieser Messdaten überschreitet (z.B. wenn länger als 120 Sekunden auf eine Datenbank-Query gewartet werden muss), wird der Site-Collection eine bestimmte Punktzahl zugewiesen. Diese werden während des Tages fortlaufend addiert. Beim Überschreiten des für die Site Collection vorgegeben Kontingents an Punkten pro Tag (per Default sind es 300), werden alle Lösungen vorübergehend (bis zum nächsten Site Collection Reset, der von einem Timer Job alle 24 Stunden durchgeführt wird) angehalten. Zusätzlich lassen sich auch Schwellenwerte für einzelne Solutions festlegen. Sobald dieser Wert überschritten wird, wird die Lösung gestoppt.Ein weiteres Kontrollinstrument sind die Solution Validators, mit deren Hilfe eine Anwendung beim Zufügen in eine Solution Gallery auf die Erfüllung bestimmter Kriterien geprüft werden können. Mit Hilfe des Validation Frameworks können relativ einfach eigene Validators geschrieben werden. Abbildung 2: Neue Überwachungsfunktionen helfen Anwendungen mit ungünstigem Verhalten zu eliminieren Beschränkte MöglichkeitenDas durch die Sandboxes Solutions gewonnene Mehr an Komfort, Sicherheit und Stabilität fordert natürlich seinen Tribut. Im Gegensatz zu den bisherigen Farm Solutions, die im Allgemeinen mit Full-Trust-Berechtigung ausgeführt werden, sind Sandboxed Solutions einer ganzen Reihe von Restriktionen unterworfen. So wird beispielsweise verhindert, dass auf das File-System des Servers oder auf Daten ausserhalb der Site Collection (z.B. über einen Web Service Call) zugegriffen werden kann. Zu diesen Einschränkungen kommt hinzu, dass nur ein Teil der SharePoint-Artefakte und auch nur ein Subset des SharePoint-Objektmodells unterstützt wird [2]. Zu den verwendbaren Artefakten gehören unter anderem WebParts (abgeleitet von der WebPart-Klasse des System.Web.UI.WebControls.WebParts-Namespace), Custom Actions, Content Types, deklarative Workflows, Workflow Actions, Event Receiver und List Definitionen [3]. Nicht erlaubt sind beispielsweise Visual WebParts [4], Application Pages mit Code-behind-Dateien oder Custom Action Groups. Bei den WebParts sind keine Connections (Verbindungen zwischen WebParts) und asynchrone Postbacks möglich.In der Regel kann beim SharePoint-Objektmodell alles genutzt werden, was in der Hierarchie unterhalb des Site-Collection-Klasse SPSite (also SPWeb, SPList, SPListItem etc.) liegt. Auch ein Großteil des Microsoft.SharePoint-Namespaces wird unterstützt. Nicht verwendbar ist die SPSecurity-Klasse, womit auch die sogenannte Evelation-of-Privileges-Technik, mit dem sich Code mit höheren Privilegien ausführen lässt als der aktuelle Benutzer besitzt, nicht eingesetzt werden kann. Etwas ärgerlich und auch nicht ganz nachvollziehbar ist, dass die zahlreichen Controls des SharePoint.WebControls-Namespace in den Sandbox-Lösungen nicht zur Verfügung stehen. Eine weitere Einschränkung: Dateien wie etwa JavaScripts, Bilder oder Cascading Stylesheets können nicht mehr in das SharePoint-Root-Folder (auch 14-Hive genannt) deployed werden. Hier muss auf eine Document Library der Site Collection (z.B. Site Assets) ausgewichen werden. Abbildung 3: Beim Eröffnen eines SharePoint-Projekts in Visual Studio kann zwischen einer Sandboxed- oder Farm-Solution gewählt werden. Um die oben erwähnte Einschränkung des Datenzugriffs ausserhalb der Site Collection via zu umgehen, kann auf die Business Connectivity Services (BCS) oder auf sogenannte Full-Trust-Proxies [5], die als Farm Solution implementiert werden müssen, zurückgegriffen werden.IntelliSense-Filter in Visual Studio 2010Die Kenntnis darüber was in Sandbox-Solutions möglich ist und was nicht, verlangt dem Entwickler etwas an Lernaufwand und ein Umdenken ab. Immer denkt Visual Studio 2010 hier ein wenig mit: Wird ein SharePoint-Projekt als Sandboxed Solution eröffnet, werden nicht verfügbare Klassen von IntelliSense nicht angezeigt. Allerdings lässt sich der Code auch dann kompilieren, wenn "verbotene" Klassen verwendet werden. Der Gund: Auch in einem Sandboxed-Projekt wird die gewöhnliche Sharepoint.dll-Datei im ISAPI-Ordner referenziert. Wer sichergehen will, dass er keine der API-Einschränkungen verwendet, kann temporär die Sharepoint.dll-Datei in UserCode\Assemblies als Referenz angeben. Vor dem Deployment darf man dann allerdings nicht vergessen, die Referenz wieder zurückzusetzen. Abbildung 4: In einem Sandboxed-Projekt blendet IntelliSense nicht verfügbare Klassen wie SPSecurity einfach aus Ein notwendiges Konzept Sandboxed Solutions sind ein interessantes und ein dringend notwendiges Konzept, das den Markt für SharePoint-Anwendungen und Add-Ons von Drittanbietern beleben könnte. Wer vor der Entwicklung einer eigenen, firmeninternen Lösung steht, muss sich gut überlegen, ob er seine Anwendung als Sandboxed- oder Farm-Solution implementiert. Wenn immer möglich, sollte man sich aufgrund der höheren Stabilität und Sicherheit zugunsten einer Sandboxed-Version entscheiden. Gleichzeitig muss man sich aber der Einschränkungen und des höheren Entwicklungsaufwands bewusst sein. Keine Qual der Wahl hat, wer als ISV SharePoint-Anwendungen für ein möglichst großen Markt (On-Premise-, Hosting- und Cloud-Computing-Installationen) im Visier hat. Hier kommen ohnehin nur Sandboxed-Solutions in Frage.Urs Bertschy gehört die auf SharePoint-Consulting spezialisierte Bertschy Informatik AG. Unter http://www.bertschy.ch/blog unterhält er einen Technologieblog, in der er sich vor allem SharePoint-Themen widmet.Links[1] http://msdn.microsoft.com/en-us/library/ee539417(office.14).aspx[2] http://msdn.microsoft.com/en-us/library/ee537860(office.14).aspx[3] http://www.sharepointdevwiki.com/display/sp2010/SharePoint+Sandboxed+Solutions[4] http://www.computerworld.ch/aktuell/news/50109/index4.html[5] http://blah.winsmarts.com/2009-12-SharePoint_2010_Sandboxed_Solutions__Full_Trust__Proxies.aspxISPeter Monadiemi


Das könnte Sie auch interessieren