MSDN Magazin > Home > Ausgaben > 2008 > November >  RIA: Lassen Sie SharePoint mit Silverlight 2-We...
RIA
Lassen Sie SharePoint mit Silverlight 2-Webparts erstrahlen
Steve Fox und Paul Stubbs

Dieser Artikel basiert auf einer Vorabversion von Silverlight 2. Änderungen an allen Informationen in diesem Artikel sind vorbehalten.

Themen in diesem Artikel:
  • Erstellen eines Silverlight-Media Players
  • Erstellen des Webparts
  • Bereitstellen einer SharePoint-Website
  • Fehlerbehebung in der Anwendung
In diesem Artikel werden folgende Technologien verwendet:
Silverlight 2, SharePoint
In der Welt webbasierter Anwendungsentwicklung fordern Benutzer eine immer bessere Anwendungsfunktionalität. Des Weiteren gehen die Forderungen an diese webbasierten Anwendungen über die Unterstützung einer einzelnen Browsertechnologie oder Plattform hinaus. Wenn Sie heute eine Webanwendung erstellen, benötigen Sie Technologien, die nicht nur eine Möglichkeit unterstützen, eine bessere Benutzerfunktionalität zu bieten. Entwicklern muss auch ermöglicht werden, diese Funktionalität schnell für mehrere Technologien und Zielgruppen bereitzustellen.
Silverlight 2 ist ein Beispiel für eine Technologie, die leistungsfähige Möglichkeiten zur Entwicklung von Webanwendungen bietet. Silverlight ist ein browser- und plattformübergreifendes Plug-In, das Entwicklern Zugriff auf ein reichhaltiges Programmiermodell zum Erstellen webbasierter Benutzerfunktionalität bietet.
SharePoint ist eine weitere Technologie, die häufig für die Entwicklung webbasierter Anwendungen verwendet wird. Unternehmen, die für die Intranetentwicklung in SharePoint investiert haben, möchten diese Technologie jetzt auf externe Websites ausdehnen. Zusammen bieten Silverlight und SharePoint eine einfache, aber leistungsfähige Infrastruktur zum Erstellen von Intranet- und Extranetanwendungen mit hochentwickelten Benutzeroberflächendesigns und -interaktionen.
In diesem Artikel wird eine wichtige Möglichkeit zur gemeinsamen Verwendung von SharePoint und Silverlight erörtert, indem eine Silverlight-Anwendung in ein SharePoint-Webpart integriert wird. Zunächst werden Sie in das Erstellen einer recht einfachen Medienanwendung eingeführt, wofür Silverlight 2 Beta 2 verwendet wird (siehe Abbildung 1). Dann wird gezeigt, wie Sie das SharePoint-Webpart als Wrapper für Ihre Silverlight-Anwendung verwenden können. Dies ist ein interessanter Ansatz, da Sie nicht nur isoliert gehostete Anwendungen erstellen, sondern auch die Webparts durch das systemeigene SharePoint-Objektmodell miteinander verbinden können, zum Beispiel durch ein Anbieter/Nutzer-Modell.
Abbildung 1 Silverlight WMV-Player-Webpart (zum Vergrößern auf das Bild klicken)

Erstellen des Media Players
Silverlight 2, das sich zum Zeitpunkt der Veröffentlichung des Artikels in der Beta 2-Phase befindet, hat seit Silverlight 1.0 eine ordentliche Entwicklung durchgemacht. Silverlight 2 unterstützt z. B. verwalteten Code. Zusätzlich zu JavaScript können Sie jetzt also Visual Basic und C# in Ihren Anwendungen verwenden. Des Weiteren wird Silverlight 2 mit einem Satz von Steuerelementen geliefert und erleichtert die Erweiterung der Steuerelemente, um das Erstellen von auf Silverlight basierenden Benutzeroberflächen viel einfacher zu gestalten. Die Designerfunktionalität ist jetzt viel besser und wird sowohl von einem Benutzeroberflächen-Designertool in Visual Studio 2008 als auch von Expression Blend unterstützt.
Um Ihre Umgebung auf das Erstellen von Silverlight-Anwendungen für SharePoint vorzubereiten, sollten Sie Folgendes installiert haben:
  • Windows Server 2003 oder Windows Server 2008
  • Windows SharePoint Services 3.0 und SP1
  • Microsoft Office SharePoint Server 2007 und SP1
  • Visual Studio 2008 Professional Edition
  • Silverlight Tools Beta 2 für Visual Studio 2008
  • Silverlight 2 Beta 2-Laufzeit
  • Windows SharePoint Services 3.0 Tools: Visual Studio-Erweiterungen, Version 1.2
Nachdem Sie Ihre Umgebung eingerichtet haben, öffnen Sie Visual Studio 2008, und erstellen Sie ein neues Projekt. Entweder im C#- oder im Visual Basic-Knoten finden Sie einen neuen Projektknoten namens „Silverlight“, der zwei Projektvorlagen enthält: eine zum Erstellen einer Silverlight-Anwendung und eine weitere zum Erstellen einer Silverlight-Klassenbibliothek (siehe Abbildung 2).
Abbildung 2 Projektvorlage für Silverlight-Anwendung (zum Vergrößern auf das Bild klicken)
Für die Beispielanwendung wurde die Silverlight-Anwendungsvorlage ausgewählt. Dieser wurde ein Name gegeben (in diesem Fall „MediaPlayer“), und die weiteren Standardoptionen wurden akzeptiert. Nachdem Sie diese Schritte abgeschlossen und auf „OK“ geklickt haben, werden Sie entweder aufgefordert, der Projektmappe ein neues Web hinzuzufügen oder dynamisch eine HTML-Testseite zum Hosten von Silverlight innerhalb des Projekts zu generieren. Wählen Sie die erste Auswahlmöglichkeit aus (der Projektmappe ein neues Web hinzuzufügen), und akzeptieren Sie wieder die Standardoptionen. Wenn Sie fertig sind, besteht Ihre Projektmappe sowohl aus dem Silverlight-Projekt als auch aus der hostenden Webanwendung (im Gegensatz zu lediglich einer weiteren HTML-Seite).
Im Beispiel können Sie diese beiden Projekte in der MediaPlayer-Projektmappe sehen. Das erste ist eine Website namens „MediaPlayerWeb“. Dies ist die Testwebsite, mit der Sie Ihre Silverlight-Anwendung entwickeln und testen werden. Das zweite Projekt ist die Silverlight-Anwendung namens „MediaPlayer“. In diesem Artikel liegt das Hauptaugenmerk auf den Dateien „Page.xaml“ und „Page.xaml.cs“ im MediaPlayer-Projekt.
In Silverlight 2 wird die Benutzeroberfläche mit einer XML-basierten, deklarativen Sprache namens XAML generiert. Das ist die gleiche Sprache, mit der WPF-Benutzeroberflächen (Windows Presentation Foundation) für Clientanwendungen erstellt werden. Page.xaml enthält den XAML-Code, mit dem die Benutzeroberfläche definiert wird. Page.xaml.cs wiederum enthält das CodeBehind für die Anwendung.
Sie können nur eine Page.xaml.cs-Datei haben, aber Sie können mehrere XAML-Dateien haben, die durch die zentrale Page.xaml-Datei verwaltet werden. Dies dient zum Verwalten separater Silverlight-Steuerelemente in einer Page.xaml-Datei.

Codieren der Anwendungsbenutzeroberfläche
Visual Studio 2008 bietet eine geteilte Entwurfs-/XAML-Ansicht, wenn Sie XAML-Dateien öffnen. Außerdem können Sie in Silverlight 2 Beta 2 Steuerelemente aus der Toolbox ziehen und in der XAML-Ansicht ablegen. (Das Ziehen von Steuerelementen in die Designeroberfläche wird in Visual Studio 2008 nicht unterstützt, obwohl Sie Objekte per Drag & Drop in die Designeroberfläche in Expression Blend einfügen können.)
Die für MediaPlayer erstellte Benutzeroberfläche ist bewusst einfach gehalten, um die grundlegenden Aspekte der Integration zu veranschaulichen. In Abbildung 3 wird der XAML-Code gezeigt, der die Benutzeroberfläche für die Silverlight-Anwendung repräsentiert. Zum Kontrollieren und Positionieren weiterer Steuerelemente innerhalb der Benutzeroberfläche werden StackPanel-Elemente verwendet. Eines davon hostet ein MediaElement, jenes Element, mit dem die WMV-Datei und ein Slider-Element wiedergegeben werden, mit dem die Zeitskala für den kurzen Film dargestellt wird. Ein weiteres hostet Button-, ToggleButton- und CheckBox-Elemente, die Funktionen zum Wiedergeben, Anhalten, Beenden und Stummschalten bereitstellen.
<UserControl x:Class="MediaPlayer.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="500">

    <StackPanel Grid.Row="1" 
                Margin="20,10,20,10" 
                Background="White" 
                Visibility="Visible">

        <MediaElement x:Name="moviePlayer" 
                      Source="Bear.wmv"
                      Margin="5">                     
        </MediaElement>

        <Slider x:Name="timeline" 
                ValueChanged="timeline_ValueChanged"
                Maximum="1"  
                Margin="5" >
        </Slider>
        <StackPanel Orientation="Horizontal" 
                    HorizontalAlignment="Center">
            <Button x:Name="movieStop"
                    Content="Stop" 
                    Height="25"
                    Width="40"

                    Click="movieStop_Click"
                    Margin="5">
            </Button>
            <ToggleButton x:Name="moviePlay" 
                          Content="Play" 
                          Height="25"
                          Width="40"

                          Click="moviePlay_Click"
                          Margin="5">
            </ToggleButton>
            <CheckBox x:Name="movieMute"
                      Content="Sound On"
                      Click="movieMute_Click">
            </CheckBox>
        </StackPanel>
    </StackPanel>
</UserControl>
Eine der Haupteigenschaften, die Sie in der XAML-basierten Benutzeroberfläche beachten sollten, ist die x:Name-Eigenschaft. Diese repräsentiert den für das Steuerelement bereitgestellten Namen, mit dem Sie diesen vom CodeBehind aus manipulieren können. Beachten Sie außerdem die Ereignisse, die einigen der Steuerelemente im XAML entsprechen, z. B. das Click="moviePlay_Click" der Schaltfläche. Wird darauf geklickt, wird die moviePlay_Click-Methode im CodeBehind aufgerufen.
Im XAML-Code wird das MediaElement-Steuerelement darauf konfiguriert, den Film „Bear.wmv“ wiederzugeben. Sie können Ihren eigenen Film aus dem Ordner „ClientBin“ laden. Dann müssen Sie die Quelleigenschaft im XAML ändern, um sicherzustellen, dass der Name der Datei widergespiegelt wird, die Sie Ihrem Projekt hinzugefügt haben. Beachten Sie außerdem, dass Sie einen HTTP-Verweis auf den Speicherort einer WMV-Datei bereitstellen können, z. B. indem Sie eine Bildbibliothek als Repository für Ihre Filme auf der SharePoint-Website verwenden.
Wenn Sie beim Erstellen der Ereignishandler innerhalb der Page.xaml-Datei für jeden der Ereignishandler (wie Click="movieMute_Click") „Click“ eingeben und dann mit IntelliSense die Ereignishandler hinzufügen, fügt Visual Studio automatisch die Stubmethoden für Ihre Ereignishandler in der Page.xaml.cs-Datei hinzu.
Bevor es mit dem CodeBehind weitergeht, werfen Sie rasch einen Blick auf die Expression Blend-Ansicht des gleichen Codes. Die gesamte Codierung wurde in Visual Studio 2008 durchgeführt. Sie können eine Benutzeroberfläche aber auch mit Expression Blend erstellen, die anschließend in Ihr Silverlight-Projekt in Visual Studio integriert werden kann. Nachdem Sie die Seite in Expression Blend geöffnet haben (siehe Abbildung 4), können Sie der Silverlight-Anwendung Elemente hinzufügen, die Datei speichern und dann zu Visual Studio 2008 zurückkehren. Dort werden Sie aufgefordert, die Änderungen von Expression Blend erneut in Ihr Visual Studio 2008-Projekt zu laden. (Um in Expression zu öffnen, klicken Sie mit der rechten Maustaste auf „Page.xaml“, und wählen Sie „In Expression Blend öffnen“ aus.)
Abbildung 4 Projektansicht in Expression Blend (zum Vergrößern auf das Bild klicken)

Der Anwendungscode
Um CodeBehind für die Silverlight-Anwendung hinzuzufügen, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei „Page.xaml“ und dann auf „Code anzeigen“. Sie können auch den Knoten „Page.xaml“ erweitern, mit der rechten Maustaste auf die Page.xaml.cs-Datei klicken und anschließend „Code anzeigen“ auswählen. Der Code in dieser Ansicht entspricht der zuvor erstellten Benutzeroberfläche. An dieser Stelle werden spezifische Eigenschaften für die Silverlight-Steuerelemente festgelegt. In Abbildung 5 wird der Code gezeigt, der der Datei „Page.xaml.cs“ hinzugefügt wurde.
namespace MediaPlayer {
    public partial class Page : UserControl {
        public Page() {
            InitializeComponent();
        }

        private void timeline_ValueChanged(
          object sender, RoutedPropertyChangedEventArgs<double> e) {
            long ticks = (long)((sender as Slider).Value * 
              this.moviePlayer.NaturalDuration.TimeSpan.Ticks);
            TimeSpan movieTimespan = new TimeSpan(ticks);
            this.moviePlayer.Position = movieTimespan;
            if (this.moviePlayer.CurrentState == MediaElementState.Playing) {
                this.moviePlay.IsChecked = true;
                this.moviePlay.Content = "Pause";
            }
        }

        private void movieStop_Click(object sender, RoutedEventArgs e) {
            this.timeline.Value = 0;
            this.moviePlayer.Stop();
            this.moviePlay.Content = "Play";
        }
        private void moviePlay_Click(object sender, RoutedEventArgs e) {
            if (moviePlay.IsChecked == true) {
                moviePlay.Content = "Pause";
                this.moviePlayer.Play();
            }
            else {
                moviePlay.Content = "Play";
                this.moviePlayer.Pause();
            }
        }

        private void movieMute_Click(object sender, RoutedEventArgs e) {
            if (movieMute.IsChecked == true) {
                movieMute.Content = "Sound On";
                this.moviePlayer.IsMuted = true;
            }
            else {
                movieMute.Content = "Sound Off";
                this.moviePlayer.IsMuted = false;
            }
        }
    }
}
Sie werden feststellen, dass es im CodeBehind einige Methoden gibt, von denen alle den Ereignishandlern entsprechen, die den Steuerelementen im XAML-Code hinzugefügt wurden. In diesem Code reagiert z. B. die Methode „movieStop_Click“ darauf, dass der Benutzer auf die Schaltfläche „Stop“ klickt, indem der Wert der Zeitachse auf 0 gesetzt (d. h. zurück an den Anfang des Films) und der Text auf der Schaltfläche „Play“ geändert wird (von „Pause“ in „Play“ in Abhängigkeit vom ursprünglichen Status).
Dieses CodeBehind reagiert auch darauf, wenn der Benutzer auf die Play/Pause-Umschaltfläche klickt, wodurch die entsprechenden Methoden aufgerufen werden und der Text auf der Umschaltfläche festlegt wird. Der Benutzer kann auch mit dem Schieberegler-Steuerelement interagieren, mit dem ein bestimmter Zeitpunkt im Film angesteuert werden kann, ähnlich wie beim schnellen Vor- bzw. Zurückspulen. Schließlich kann der Benutzer den Ton des Films abstellen, indem er auf das Kontrollkästchen „Mute“ klickt.
Jetzt können Sie die Silverlight-Anwendung debuggen, indem Sie die Taste F5 auf Ihrer Tastatur betätigen oder im Menü „Projekt“ von Visual Studio auf „Debuggen | „Debugging starten“ klicken. Dadurch wird Ihr Standardbrowser aufgerufen und die Silverlight-Anwendung geladen. Unter Umständen wird eine Warnung angezeigt, dass das Debugging nicht aktiviert ist. Klicken Sie auf „OK“, damit Visual Studio die Datei „web.config“ ändert, um das Debugging zu aktivieren. Wenn alles richtig funktioniert, wird die WMV-Datei (in diesem Fall Bear.wmv) geladen und mit der Wiedergabe begonnen. Sie können den Wiedergabezustand ändern, indem Sie auf „Stop“ oder „Pause“ klicken oder das Schieberegler-Steuerelement verwenden. Sie können auch den Klang beeinflussen, indem Sie das Kontrollkästchen „Mute“ aktivieren.
Die Silverlight-Anwendung funktioniert zwar jetzt, aber Sie müssen noch einen Schritt durchführen, bevor Sie mit der Integration in SharePoint fortfahren können. Durch diesen Schritt soll sichergestellt werden, dass die XAP-Datei, das Archiv, das die erstellte Silverlight-Anwendung enthält, sich an einer Position befindet, an der sie vom SharePoint-Webpart geladen werden kann.
Die XAP-Datei enthält alle zentralen Anwendungsdateien für Ihre Silverlight-Anwendung. Da die XAP-Datei im Grunde ein Archiv der erstellten Projektdateien ist, können Sie die XAP-Datei mit einer .zip-Erweiterung umbenennen und anschließend öffnen, um die Dateien zu sehen, die im XAP-Paket enthalten sind.
Wenn Sie die MediaPlayer.xap-Datei öffnen, sehen Sie mehrere unterschiedliche Dateien: Die wichtigsten DLLs für das Projekt und eine AppManifest.xaml-Datei. Die DLLs im Archiv sind eine Kombination aus erstelltem Code (in diesem Beispiel hieß die erstellte DLL „MediaPlayer.dll“) und Microsoft-DLLs, die zum Ausführen Ihrer kompilierten Assembly erforderlich sind. Nun wird die AppManifest.xaml-Datei generiert. Darin sind alle Abhängigkeiten von Ihrem Projekt aufgeführt. Hier sehen Sie die Inhalte der AppManifest.xaml-Datei des in diesem Artikel erörterten MediaPlayer-Beispiels. Darin ist eine Reihe von Schlüsselverweisen enthalten, die für die Bereitstellung der Silverlight-Anwendung spezifisch sind:
<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  EntryPointAssembly="MediaPlayer" 
  EntryPointType="MediaPlayer.App" 
  RuntimeVersion="2.0.30523.6">
  <Deployment.Parts>
    <AssemblyPart x:Name="MediaPlayer" Source="MediaPlayer.dll" />
    <AssemblyPart x:Name="System.Windows.Controls.Extended" 
      Source="System.Windows.Controls.Extended.dll" />
  </Deployment.Parts>
</Deployment>
Es werden der Name der Assembly (MediaPlayer) sowie die Silverlight-Laufzeitversion, mit der die Anwendung kompiliert wurde (2.0.30523.6), angezeigt, und anschließend werden die erforderlichen Assemblys aufgeführt, die auch im XAP-Archiv enthalten sind.
Vergewissern Sie sich, dass die XAP-Datei an einen Speicherort in Ihrer SharePoint-Website kopiert wird. Für das MediaPlayer-Beispiel wurde im virtuellen Stammverzeichnis der SharePoint-Website ein Ordner namens „ClientBin“ erstellt. Alternativ können Sie die XAP-Datei in eine SharePoint-Dokumentbibliothek oder den Ordner „_layouts“ auf Ihrem SharePoint-Server kopieren. In ClientBin wurde ein Ordner namens „XAP“ erstellt, der alle XAP-Dateien enthält (oder Silverlight-Anwendungen, die erstellt und in SharePoint integriert werden). Sie müssen auf diesen Speicherort verweisen, wenn Sie im SharePoint-Webpartprojekt eine Instanz des Silverlight-Steuerelements erstellen. Außerdem müssen Sie beim Aktualisieren und Neukompilieren Ihrer Silverlight-Anwendung daran denken, die neueste XAP-Datei in das entsprechende Verzeichnis zu kopieren.
Nachdem Sie die XAP-Datei an einen Speicherort auf dem Server kopiert haben, können Sie jetzt den SharePoint-Webpart-Hostcontainer für die Silverlight-Anwendung verschieben.
Umbenennen eines Webparts
Wenn Sie den Standardnamen für Ihr Webpartprojekt akzeptiert haben, enthält die Projektshell ein Webpart namens „WebPart1“. Sie können diesen beibehalten, aber wahrscheinlich möchten Sie Ihrem Webpart einen besser beschreibenden Namen geben.
Klicken Sie dazu mit der rechten Maustaste auf das vorhandene Webpart (WebPart1), und wählen Sie „Löschen“ aus. Klicken Sie als Nächstes auf die Registerkarte „WSP“, und löschen Sie alles unter „WebPart1WebPart“. (Wenn die WSP-Ansicht, die Ansicht des Webpartpakets, wie es in SharePoint bereitgestellt wird, nicht angezeigt wird, klicken Sie im Hauptmenü von Visual Studio auf „Ansicht“, „Weitere Fenster“, und wählen Sie die WSP-Ansicht aus.) Nachdem Sie das Löschen des Webparts bestätigt haben, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt und dann auf „Neues Element hinzufügen“. Wählen Sie im Dialogfeld „Neues Element hinzufügen“ den SharePoint-Knoten und dann „Webpart“ aus. Geben Sie dem Webpart einen intuitiveren Namen.
Hinzufügen eines neuen Webparts zum Projekt (zum Vergrößern auf das Bild klicken)

Erstellen und Bereitstellen des Webparts
Um das Webpart zu erstellen, öffnen Sie Visual Studio, und öffnen Sie eine neue Projektvorlage für ein SharePoint-Webpart (siehe Abbildung 6). Im unserem Beispiel wurde das neue Webpartprojekt „MediaPlayerWebPart“ genannt.
Abbildung 6 Webpart-Projektvorlage (zum Vergrößern auf das Bild klicken)
Nachdem Sie Ihr neues Webpart hinzugefügt haben, müssen Sie zwei Verweise zum Projekt hinzufügen, bevor Sie Code hinzufügen können. Der erste Verweis ist die System.Web.Extensions-DLL und der zweite die System.Web.Silverlight-DLL. Um dem Webpart Code hinzuzufügen, klicken Sie mit der rechten Maustaste auf die Webpart-Codedatei (z. B. MediaPlayerWebPart.cs) und dann auf „Code anzeigen“. In Abbildung 7 wird der Code gezeigt, der dem Webpartprojekt hinzugefügt wurde.
Es wird auf zwei Schlüsselelemente hingewiesen. Das erste ist die Tatsache, dass die Silverlight-Anwendung mit dem ScriptManager-Objekt gerendert wird. Der Grund dafür ist, dass die Silverlight-Anwendung vom AJAX-ScriptManager-Steuerelement abhängt. Deshalb muss dem Projekt zunächst eine Instanz des ScriptManager-Objekts hinzugefügt werden.
Das zweite ist die Instanziierung des Silverlight-Steuerelements. Im Code in Abbildung 7 repräsentiert myMediaCtrl die Instanz unseres Silverlight-Steuerelements (praktisch der Silverlight-Media Player, der erstellt wurde). Nachdem Sie eine neue Instanz des Steuerelements erstellt haben, müssen Sie einige Eigenschaften festlegen. Unter diesen Eigenschaften ist die Source-Eigenschaft sehr wichtig. Diese zeigt auf den Speicherort der XAP-Datei und lädt diese dann im Webpart.
namespace MediaPlayerWebPart {
    [Guid("7e7ef885-130a-45e6-ab14-15f344b1939d")]
    public class MediaPlayerWebPart : 
      System.Web.UI.WebControls.WebParts.WebPart {
        public MediaPlayerWebPart() {
        }

        protected override void OnLoad(EventArgs e) {
            base.OnLoad(e);

            ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
            if (scriptManager == null) {
                scriptManager = new ScriptManager();
                this.Controls.Add(scriptManager);
            }
        }

        protected override void CreateChildControls() {
            System.Web.UI.SilverlightControls.Silverlight myMediaCtrl = 
              new System.Web.UI.SilverlightControls.Silverlight();
            myMediaCtrl.ID = "myMediaPlayer";
            myMediaCtrl.Source = "/ClientBin/XAP/MediaPlayer.xap";
            myMediaCtrl.Width = new System.Web.UI.WebControls.Unit(900);
            myMediaCtrl.Height = new System.Web.UI.WebControls.Unit(650);

            this.Controls.Add(myMediaCtrl);
        }
    }
}
Wenn der Code hinzugefügt ist, können Sie jetzt den zweiten Schritt abschließen: Konfigurieren des Webpartprojekts für die Bereitstellung. Öffnen Sie dazu die Ansicht „Eigenschaften“ des Projekts, und klicken Sie auf die Registerkarte „Debuggen“. Aktivieren Sie das Kontrollkästchen „Browser mit folgender URL starten“, und geben Sie die Stamm-URL für Ihre SharePoint-Website ein (z. B. http://spvm).
Um die Bereitstellung des Webparts zu testen, klicken Sie auf „Erstellen“ und dann auf „Projektmappe bereitstellen“. Dadurch wird automatisch ein WSP-Paket erstellt (das CAB-Äquivalent zu SharePoint-Assemblybereitstellungen), das alle Dateien enthält, die zum Bereitstellen der Webpartassembly für SharePoint erforderlich sind. Die Projektmappendateien werden an den entsprechenden Orten auf Ihrer SharePoint-Website bereitgestellt. Anschließend wird die Internet Information Services (IIS)-Webanwendung beendet und neu gestartet.
Wenn Sie versuchen, unter Windows Server 2008 bereitzustellen und UAC aktiviert ist, müssen Sie Visual Studio als Administrator ausführen, sonst erhalten Sie die Fehlermeldung „Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt“. Wenn alles richtig konfiguriert wurde, können Sie das Webpart jetzt einer Website in SharePoint hinzufügen. Der letzte Integrationsschritt muss also zwischen SharePoint und Silverlight unternommen werden.

Hinzufügen der Anwendung zur SharePoint-Website
Nun haben Sie die Silverlight-Anwendung erstellt und den Webpartcontainer für die Silverlight-Anwendung erstellt und bereitgestellt. Der letzte Schritt besteht darin, eine Website zu erstellen, die das Webpart hosten kann. Bevor Sie jedoch dazu übergehen, müssen einige Elemente überprüft werden.
Zunächst müssen Sie überprüfen, ob die System.Web.Silverlight.dll im globalen Assemblycache (GAC) installiert ist. Wenn nicht, installieren Sie die Datei aus dem Installationsverzeichnis „Programme\Microsoft SDKs\Silverlight\v2.0\Libraries\Server“.
Als Zweites müssen Sie überprüfen, ob die Datei „Web.config“ in Ihrem SharePoint-Stammverzeichnis über alle notwendigen Elemente verfügt, um eine Silverlight-Anwendung zu unterstützen, und ob die Silverlight-Anwendung als sicheres Steuerelement markiert ist. Im Folgenden wird ein Eintrag für ein sicheres Steuerelement für MediaPlayerWebPart in der Datei „Web.config“ veranschaulicht (der automatisch hinzugefügt wird, wenn Sie Ihr Projekt auf Ihrer SharePoint-Website erstellen und bereitstellen):
<SafeControl Assembly="MediaPlayerWebPart, 
             Version=1.0.0.0, 
             Culture=neutral,    
             PublicKeyToken=9f4da00116c38ec5" 
             Namespace="MediaPlayerWebPart" 
             TypeName="MediaPlayerWebPart" 
             Safe="True" />
Die Datei „Web.config“ wird in diesem Artikel nicht ausführlich erörtert. Wenn Sie jedoch sicherzustellen versuchen, dass die Datei „Web.config“ im Stammverzeichnis der SharePoint-Website die Silverlight-Anwendung unterstützt, gelingt dies am einfachsten, indem Sie die Datei „Web.config“ überprüfen, die als Bestandteil des Silverlight-Projekts erstellt wird, und sicherstellen, dass alle in der Datei „Web.config“ vorhandenen Elemente im Stammordner Ihrer SharePoint-Website vorhanden sind. Wenn keines dieser Elemente vorhanden ist, wird Ihre Silverlight-Anwendung nicht im SharePoint-Webpart angezeigt.
Jetzt können Sie die SharePoint-Website erstellen, die das auf Silverlight basierende Webpart hosten wird. Navigieren Sie dazu zu Ihrer SharePoint-Website. Es wurde eine separate Testwebsite für die Silverlight-Anwendung namens „Media Player“ erstellt. Um eine Website zu erstellen, navigieren Sie zur Homepage der SharePoint-Website, und klicken Sie auf „Websiteaktionen“ | „Websiteeinstellungen“. Klicken Sie unter „Websiteverwaltung“ auf „Websites und Arbeitsbereiche“. Klicken Sie auf der Seite „Websites und Arbeitsbereiche“ auf „Erstellen“. Geben Sie einen Namen, eine Beschreibung, den Typ der Website (es wurde „Leere Website“ ausgewählt) und die URL für Ihre Website an, und klicken Sie dann auf „Erstellen“.
Wenn die neue Website erstellt wird, lädt SharePoint diese automatisch. Klicken Sie auf „Websiteaktionen“ und „Seite bearbeiten“. Klicken Sie in der Website auf „Webpart hinzufügen“. Der Webpartkatalog wird aufgerufen (siehe Abbildung 8). Führen Sie einen Bildlauf nach unten durch, bis Sie das Webpartprojekt gefunden haben, das Sie SharePoint hinzugefügt haben (z. B. MediaPlayerWebPart). Aktivieren Sie das Kontrollkästchen, und klicken Sie dann auf „Hinzufügen“. Dadurch wird die Silverlight-Anwendung „Media Player“ in SharePoint über das Webpart als Hostcontainer hinzugefügt. Die Silverlight-Anwendung wird genau so reagieren, als hätten Sie sie in Visual Studio 2008 debuggt. Sie wird lediglich als Webpart innerhalb von SharePoint angezeigt. Nachdem Sie SharePoint das Webpart hinzugefügt haben, experimentieren Sie mit den verschiedenen Steuerelementen innerhalb der Silverlight-Anwendung, um sicherzustellen, dass alle funktionieren.
Abbildung 8 Webpartkatalog (zum Vergrößern auf das Bild klicken)
Weiterführende Literatur zu Webparts

SharePoint- und Silverlight-Blaupausen

Silverlight-Homepage

SharePoint-Entwicklungsressourcen

Problembehandlung
Nachdem Sie SharePoint das Webpart hinzugefügt haben, experimentieren Sie unbedingt mit den verschiedenen Steuerelementen innerhalb der Silverlight-Anwendung, um sicherzustellen, dass alle funktionieren. Wie Sie wissen, geht Entwicklung nicht ganz ohne Problembehandlung vonstatten. Aus diesem Grund werden einige Punkte genannt, die es zu beachten gilt, wenn Sie Silverlight-Anwendungen in SharePoint integrieren.
Wenn Sie beim Laden von Medien Netzwerkfehler erhalten, ist der häufigste Grund dafür, dass die bereitgestellte Assembly die Medien nicht finden kann. Wenn der Medienpfad relativ ist, ist er auch relativ zum XAP-Speicherort. Stellen Sie also sicher, dass die Medien richtig in die Silverlight-Anwendung geladen werden.
Stellen Sie sicher, dass der XAP-Quellspeicherort innerhalb der Webpartdatei richtig angegeben ist. Wir haben oft erlebt, dass das Webpart ohne Silverlight-Anwendung lädt. Dies geschieht in der Regel, weil das Webpart die XAP-Datei nicht finden kann. Wenn Sie Ihre Silverlight-Anwendung aktualisieren, stellen Sie außerdem sicher, dass Sie die neuste Version der XAP-Datei wieder an den Quellspeicherort kopieren, den Sie im Webpartprojekt angegeben haben.
Wenn Sie das Webpart erfolgreich hinzugefügt haben, aber Silverlight immer noch nicht angezeigt wird, sollten Sie die Datei „Web.config“ überprüfen, die sich im SharePoint-Stammverzeichnis befindet. Stellen Sie sicher, dass das Webpart nicht nur als sicheres Steuerelement markiert ist (wie weiter oben erläutert), sondern dass auch alle notwendigen Elemente vorhanden sind, um die Silverlight-Anwendung zu unterstützen.

Steve Fox arbeitet bei Microsoft im Bereich Technologieförderung als Mitglied des Developer Platform Evangelism-Teams. Er verbringt die meiste Zeit damit, die Office- und SharePoint-Entwicklung voranzutreiben und mit Unternehmen zusammenzuarbeiten, die diese Anwendungen bei ihren Entwicklungsbemühungen verwenden möchten. Steve Fox ist Koautor einiger Bücher, einschließlich Professional Microsoft SharePoint Development Using Silverlight 2. Sie finden seinen Blog unter blogs.msdn.com/steve_fox.

Paul Stubbs ist Architekt im Platform Architecture Team. Dort konzentriert er sich auf Lösungsarchitektur mit dem Schwerpunkt Büroanwenderproduktivität, Business-to-Customer-Lösungen und Web 2.0 für Social Networking. Er hat zwei Bücher zur Lösungsentwicklung mittels Microsoft Office geschrieben, mehrere Artikel für das MSDN Magazin verfasst und auf Microsoft Tech•Ed- und Tech Ready-Konferenzen Vorträge gehalten. Lesen Sie das Blog von Paul unter blogs.msdn.com/pstubbs.

Page view tracker