03.01.2011, 17:28 Uhr

SharePoint 2010 mit Silverlight erweitern

Silverlight ist fester Bestandteil von SharePoint 2010. Wir zeigen, wo Silverlight SharePoint-Anwendungen verstärkt und wie Entwickler SharePoint mit eigenen Silverlight-Komponenten ausbauen können.
Man muss ein wenig genauer hinschauen, um Spuren von Microsofts RIA-Technologie (Rich Internet Applications) bei SharePoint 2010 zu entdecken, dabei wird es an zahlreichen Stellen eingesetzt. Microsoft benutzt Silverlight vor allem dazu, die «User Experience» zu verbessern. Beispiele dafür sind der «Create»-Dialog zum Anlegen von neuen Sites oder das «Upload»-Fenster, über das Dokumente bequem per Drag&Drop hochgeladen werden können. Silverlight wird aber auch dort eingesetzt, wo es sich geradezu aufdrängt, Daten nicht einfach in einer Liste, sondern etwa in aussagekräftigen Diagrammen zu präsentieren. Zwei Beispiele sind die Organisationsstruktur eines Unternehmens, die über den Organisation-Browser ansprechend aufbereitet, und der Zustand von Workflows, die mit Hilfe der Visio Services visualisiert werden. Das Silverlight Web Part Wer sich als Entwickler die Silverlight-Funktionalität in einer SharePoint-Seite zu Nutzen machen möchte, hat dafür gleich mehrere Möglichkeiten. Wie bei einer gewöhnlichen ASP.NET-Seite kann man auf das <object>-Tag zurückgreifen, um eine Silverlight-Komponente in eine Site- oder Master-Pages einzubetten. Will man sich allerdings nicht mit HTML beschäftigen, oder möchte man dem User selber die Möglichkeit geben, Silverlight-Anwendungen innerhalb einer SharePoint-Umgebung zu platzieren, empfiehlt sich die Verwendung des neuen Silverlight Web Parts. Dazu muss erst das gewünschte XAP-File – XAP ist der File-Container, in dem eine Silverlight-Anwendung zusammengefasst wird – in eine Dokumentenbibliothek hochgeladen werden. Anschliessend wird in den Eigenschaften des Silverlight-Web Parts lediglich der Pfad zum gewünschten XAP-File eingetragen. Dann wird die RIA-Applikation auf der betreffenden SharePoint-Seite angezeigt. Automatisches Deployment per WSP Damit sich Benutzter nicht mit dem Hochladen von XAP-Dateien oder dem Eingeben von Pfadangaben abgeben müssen, lässt sich das Deployment von Silverlight-Anwendungen und die Konfiguration des Web Parts unter Verwendung einer SharePoint-Solution weitgehend automatisieren. So kann das XAP-File über das <Module>-Element (siehe Codebeispiel 1) eines Features in eine SharePoint-Bibliothek kopiert werden. Alternativ lassen sich XAP-Files auch im SharePoint Rootfolder unter 14\templates\layouts\clientbin ablegen. Zudem lässt sich das Silverlight Web Part mit Hilfe eines Web-Part-Manifest-Files (.webpart) vorkonfigurieren – inklusive der Pfadangabe zum XAP-File. Beides kann mit Visual Studio 2010 mit wenigen Handgriffen in einem SharePoint-Projekt zusammenfasst werden (siehe Abbildung 1), aus dem sich dann auf Knopfdruck eine Solutionerzeugen lässt. Beim Einrichten der Solution auf dem SharePoint-Server wird das XAP-File in die angegebene Bibliothek kopiert und das Web-Part-Konfigurationsfile in der Web Part Gallery installiert. Anschliessend kann der Benutzer das neue Web Part bequem über die Gallerie wählen und beliebig auf einer SharePoint-Seite platzieren. Eigene Silverlight Web Parts Natürlich kann man auch gänzlich auf das Standard Silverlight Web Part verzichten und ein eigenes Wrapper Web Part schreiben, das den notwendigen HTML-Code inklusive der Definition des eingebetteten Silverlight-Objekts ausgibt. Dies geschieht mit Hilfe der RenderContents()-Methode (Codebeispiel 2). Eigene Web Parts sind zwar etwas aufwändiger in der Umsetzung, eröffnen aber deutlich mehr Möglichkeiten, weil sie zusätzlich mit eigener Programmlogik versehen werden können. Dazu gehört etwa die Verwendung von Web Part Connections oder die Nutzung von eigenen Eigenschaften ein, über welche die Silverlight-Anwendung zur Laufzeit durch den User konfiguriert werden kann. Eigenschaften lassen sich relativ einfach über das initParams-Attribut, wie in Zeile 31 zu sehen, an die Silverlight-Applikation übergeben.  Silverlight und das Client Object Model Richtig spannend wird die Verwendung von eigenen Silverlight-Komponenten immer dann, wenn mit Daten und Funktionen gearbeitet werden kann, welche von SharePoint zur Verfügung gestellt werden. Dazu hat Microsoft in SharePoint 2010 das Client Object Model (Client OM) eingeführt, das als eine Art Brücke zwischen SharePoint und Client-Technologien wie .NET (WinForms, WPF etc.), Silverlight oder JavaScript fungiert. Ein typisches Einsatzgebiet von Silverlight in Zusammenhang mit dem Client Object Model ist die Visualisierung von Listen-Items in Diagrammen oder neuartigen Bedienungselementen, wie etwa die aus iTunes bekannte Karussell-Ansicht. Um in Silverlight mit dem Client OM arbeiten zu können, müssen dem Projekt zwei Referenzen zu den Assemblies Microsoft.SharePoint.Client.Silverlight.dll und Microsoft.SharePoint.Client.Silverlight.Runtime.dll zugefügt werden. Beide sind im Verzeichnis \14\TEMPLATE\LAYOUTS\ClientBin zu finden. Danach kann mit dem Client OM gearbeitet werden (Codebeispiel 3). Zunächst wird der Kontext zur gewünschten SharePoint-Site (Zeile 24) aufgebaut. Anschliessend stehen die SharePoint-Objekte zur Verfügung, so dass sich Aufgaben wie das Laden aller Subsites der aktuellen Site, erledigen lassen. In Silverlight werden Client-OM-Anfragen asynchron abgewickelt. Das bedeutet konkret, dass die Ausführung der Abfrage in einem eigenen Thread durchgeführt wird. Damit kann die Silverlight-Anwendung – in einem «UI Thread» – weiterarbeiten und muss nicht eine Rückmeldung der Anfrage abwarten. Statt mit ExecuteQuery() müssen Abfragen deshalb mit der ExecuteQueryAsync()-Methode ausgeführt werden (Zeile 29). In dieser werden auch gleich zwei Eventhandler (OnSuccess und OnFail) definiert, welche bei der Rückmeldung vom Server je nachdem, ob die Abfrage erfolgreich oder fehlerhaft war, aufgerufen werden. Wichtig: Der Thread des Callbacks muss via Dispatcher wieder an den UI-Thread zurückgegeben werden (Codezeilen 35 und 43), bevor die UI der Silverlight-Anwendung aktualisiert wird (Codezeilen 37). Die geladenen Daten werden via Databinding an die im entsprechenden XAML-File (Codebeispiel 4) gezeigten Objekte gebunden. Das Resultat des Beispiels ist in Abbildung 2 zu sehen. Support für Out of Browser Ab Version 3 lassen sich Silverlight-Anwendungen im «Out-of-Browser-Mode» (OOB) ausführen. Wie der Name vermuten lässt, wird dabei die Anwendung vom Browser entkoppelt und verhält sich dann ähnlich wie eine Desktop-Applikation. Praktischerweise lässt sich das OOB-Konzept auch im Zusammenhang mit SharePoint verwenden. Um eine Anwendung OOB-fähig zu machen, muss vor dem Kompilieren lediglich die Option «Out of Browser» in den Projekteigenschaften (Abbildung 3) aktiviert werden. Danach lässt sich die Anwendung durch Klick auf die rechte Maustaste auch ausserhalb einer SharePoint-Site nutzen. Eine Bereicherung für SharePoint Silverlight bringt dem Entwickler viele spannende Optionen um SharePoint, um eigene UI-Komponenten oder gar ganzen Anwendungen zu erweitern. Den Möglichkeiten sind dabei kaum Grenzen gesetzt und reichen von einfachen Benutzerhilfen über die visuelle Aufbereitung bis hin zu interaktiven Anwendungen für E-Learning, Business Intelligence oder Videostreaming. Urs Bertschy ist Inhaber der Bertschy Informatik AG in Zug, die sich auf Beratung und Know-how rund um das Thema SharePoint spezialisiert hat. Sie erreichen den Autor über http://www.bertschy.ch/blogPeter Monadjemi


Das könnte Sie auch interessieren