Dieser Artikel wurde maschinell übersetzt.

Datengebundenes Design

Erstellen eines Silverlight 4-Webparts für SharePoint

Paul Stubbs

Beispielcode herunterladen

Microsoft SharePoint 2010 bietet eine Zusammenarbeit Business-Plattform, die einfach in Tools anpassen, die Organisationen abhängen und mit vergrößert werden können. Und beim Erstellen von benutzerdefinierter SharePoint-Lösungen ist es am besten nutzen von Silverlight auf dem front-End.

Webparts sind zentraler Bestandteil die meisten SharePoint-Lösungen. Wenn Sie denken, dass die meisten Entwickler mit Silverlight in Ihrer SharePoint-Anwendung in Webparts verwenden, scheint der offensichtlichen Richtung und Webparts sind die gängigste Methode zum Erstellen von Silverlight-Anwendungen in SharePoint. Aber Webparts werden nicht nur die Option.

Außerdem können Sie Silverlight in Menüs, Navigation, Dialogfelder, Seitenlayouts und Masterseiten – Sie können an einer beliebigen Stelle ein Objekttag einfügen. Dadurch erhalten Entwickler eine Vielzahl von Möglichkeiten, um großartige Erfahrungen zu erstellen, die Ihrer Meinung nach in SharePoint integriert. Bei diesem Ansatz muss Silverlight wie eine natürliche Erweiterung zu SharePoint fühlen.

Die einfach Breite und Tiefe der SharePoint-Plattform und Silverlight möglich für Entwickler schwierige. In der Tat ist es üblich, konzentriert sich ausschließlich auf SharePoint-Entwickler und Designer mehr mit Silverlight vertraut sein. Um eine nützliche SharePoint-Anwendung zu erstellen, müssen Sie beide Technologien verstehen. In diesem Artikel werde ich Ihnen einen Überblick über Silverlight-Integration mit SharePoint 2010 und schrittweise die Grundlagen der Verwendung von Silverlight in front-End für eine SharePoint-Lösung.

Silverlight und SharePoint-Workflow

Der erste Schritt beim Arbeiten mit Silverlight und SharePoint verwendet die richtigen Tools zusammen. Visual Studio und Expression Blend sind zur Zusammenarbeit konzipiert, und verwenden Sie ein Silverlight kann Entwickler eine hervorragende Anwendung Beispieldaten aus SharePoint, ohne jemals anzeigen oder Installieren von SharePoint erstellen. Ebenso kann ein SharePoint-Entwickler integrieren die Silverlight-Anwendung in SharePoint ohne zu verstehen oder zu genau in den XAML-Code.

In diesem Artikel wird aufgezeigt, wie einen einfachen Silverlight-Webpart zu erstellen, mit der das SharePoint-Client-Objektmodell für Silverlight Oberflächen von eine SharePoint-Liste. Die Anwendung außerdem wird ein SharePoint-Anwendung in einer Sandbox ausgeführt, mit denen Administratoren der Websitesammlung zum Installieren und Verwalten der Anwendung. Die Anwendung funktioniert auch auf standardmäßige SharePoint-Online-Konten.

Abbildung 1 zeigt, wie die endgültige Anwendung aussehen wird, wenn es auf dem SharePoint ausgeführt wird.

image: The Completed Silverlight/SharePoint Application

Abbildung 1 die vollständige Silverlight/SharePoint-Webanwendung

SharePoint-Beispieldaten

Damit Silverlight und SharePoint-Entwickler unabhängig voneinander arbeiten können müssen der Silverlight-Entwickler Beispieldaten auf der Grundlage von SharePoint-Daten. Dadurch können den Silverlight-Entwickler zum Erstellen einer Anwendung, die ordnungsgemäß funktionieren, wenn SharePoint eingesteckt völlig frei sein.

In Expression Blend hat eine Reihe von Funktionen für unterstützende Entwurf Zeitdaten und Beispieldaten. In diesem Beispiel verwende ich die formatierte XML-Beispieldaten. Dies bedeutet, dass SharePoint-Entwickler eine XML-Datei erstellen muss, die der SharePoint-Liste darstellt, die die Anwendung verwenden wird. Können Sie diese Beispieldatei für die Daten in jeder gewünschten Form, aber alles ist wesentlich einfacher, wenn Sie es, die dieselbe Form wie was aus SharePoint zurückgegeben wird. Beispielsweise Formen zurückgegeben, die WCF-Datendienste-Entitäten und der Rest ListData von SharePoint Services unterscheiden sich von der Form der Daten mit das Silverlight-Client-Objektmodell zurückgegeben.

In dieser Anwendung verwende ich einige der Features der Silverlight-4 und das SharePoint-Objektmodell Client neue Datenbindung für Silverlight. Es gibt keine integrierte Möglichkeit, diese Beispieldaten generieren, daher Sie die SharePoint-Beispieldaten generieren eine einfache Konsolenanwendung erstellen müssen. In diesem Fall erstellt habe ich eine Visual Basic-Konsolenanwendung, die das Objektmodell für Microsoft .NET Framework-Client um ein XML-Dokuments aus dem oberen fünf Listenelementen zu generieren (siehe Abbildung 2 ).

Abbildung 2 Console App zum Zurückgeben von XML-Daten

Imports Microsoft.SharePoint.Client
Imports System.Text
Module Module1
  Sub Main()
    Dim context As New _
      ClientContext("http://intranet.contoso.com")
    Dim sampleListItems As ListItemCollection
    Dim sampleList As List = _
      context.Web.Lists.GetByTitle("Contacts")
    Dim qry As New Microsoft.SharePoint.Client.CamlQuery
    qry.ViewXml = "<View><RowLimit>5</RowLimit></View>"
    sampleListItems = sampleList.GetItems(qry)
    context.Load(sampleListItems)
    context.ExecuteQuery()
    'Build the Sample XML Data
    Dim SampleData = _
      <SharePointListItems></SharePointListItems>
    'Iterate through each row using Linq 
    'and XML Literals
    For Each item In sampleListItems
      Dim sampleItem = <ListItem>
        <%= From fieldValue In item.FieldValues _
        Select <<%= fieldValue.Key %>>
        <%= fieldValue.Value %></> %>
        </ListItem>
      SampleData.Add(sampleItem)
    Next
    'Write the file to disk
    System.IO.File.AppendAllText( _
      "C:\SharePointSampleData.xml", _
      SampleData.ToString())
  End Sub
End Module

Nachdem Sie die Datei SharePointSampleData.xml haben, können Sie diese in Expression Blend als die Entwurfszeitdatenquelle verwendet werden.

Entwerfen mit Beispieldaten

Mit dem Beispiel in manuell Daten XML-Datei, können Expression Blend öffnen und eine neue Silverlight-4-Anwendung erstellen.

Klicken Sie im Bereich Daten Beispieldaten erstellen-Symbol in der oberen rechten Ecke und wählen Sie aus XML Importieren von Beispieldaten klicken und suchen Sie die Datei SharePointSampleData.xml. Sie können auch lassen den Block überprüft, um die Beispieldaten angezeigt wird, während die Anwendung ausgeführt wird. Andernfalls wird nur die Beispieldaten in Blend oder Visual Studio-Designer angezeigt.

Abbildung 3 zeigt die Liste der Kontakte. Das Client-Objektmodell gibt tatsächlich ein Wörterbuch von 45 Felder so, dass Sie alle in der Abbildung ohne Bildlauf angezeigt werden können.

image: The Sample Contacts List

Abbildung 3 die Beispiel-Kontaktliste

Der nächste Schritt besteht darin, das datengebundene Liste erstellen. Das Datenpanel stellen Sie sicher, dass das Symbol List-Modus festgelegt ist. Sie finden diese im oben links des Bereichs Daten. Wählen Sie jetzt die Felder, die im Listenfeld angezeigt werden sollen. Titel, der tatsächlich der Vorname ist, in diesem Fall aktiviert und LastName aktiviert. Ziehen Sie die Felder aus der Liste aus, und legen Sie Sie auf die Entwurfsoberfläche. In Expression Blend erstellt und die Daten Listenvorlage datengebundenen den Feldern. Ordnen Sie im Listenfeld auf der linken Seite der Entwurfsoberfläche, um Platz für die Details zu machen.

Erstellen die datengebundenen Details ist genauso einfach. Details-Modus wählen, vom Symbol in der oberen linke Bereich im Fenster von Daten. Wählen Sie die Felder, die als die Detailfelder angezeigt werden soll. Ziehen Sie die Felder auf der Entwurfsoberfläche. In Expression Blend wird jedes Feld gebunden werden, um das ausgewählte Element im Listenfeld erstellt. Wenn Sie F5 drücken, und führen Sie die Anwendung, sehen Sie im Listenfeld mit den Beispieldaten gefüllt. Wenn Sie das ausgewählte Element im Listenfeld ändern, sehen Sie die Details auf der rechten Seite ändern (siehe Abbildung 4 ).

image: Working on the App in Expression Blend

Abbildung 4 Arbeiten in der Anwendung in Expression Blend

Sie haben nun eine voll funktionsfähige Anwendung datengebundenen auf der SharePoint-Beispieldaten. Als Silverlight-Designer können Sie weiterhin zum Testen und Optimieren Ihrer Anwendung ohne jemals Wissen über SharePoint. Ich habe in diesem Beispiel erfolgt ein wenig mehr Entwurfsarbeit und aller Felder angeordnet und das Skizze Design aus dem Silverlight-Toolkit hinzugefügt.

Das Silverlight-Webpart

Zu diesem Zeitpunkt kann der Silverlight-Entwickler die Projektdatei für SharePoint-Entwickler übergeben. Dies ist möglich, da Expression Blend und Visual Studio denselben Projektdateien gemeinsam nutzen. SharePoint-Entwickler öffnet das Projekt in Visual Studio 2010 und können alle Teile der Anwendung anzeigen, so dass er auf die Anwendung in Visual Studio-Designer arbeiten kann (siehe Abbildung 5 ).

image: Working on the App in Visual Studio

Abbildung 5 Arbeiten in der Anwendung in Visual Studio

SharePoint-Entwickler muss dazu zunächst wird ein leeres SharePoint-Projekt vorhandenen Projektmappe hinzuzufügen, die das Silverlight-Projekt enthält. Er wird dieser SharePoint-Projekt zur Bereitstellung der Silverlight-Anwendungsdatei (XAP) und erstellen Sie ein Silverlight-Webpart zum Hosten der Silverlight-Anwendung verwenden.

Visual Studio 2010 wird auf diese Weise diese beiden Aufgaben einfach im Vergleich zum Erstellen von SharePoint-Lösungen in der Vergangenheit. Mit der rechten Maustaste auf die Projektmappe, und wählen Sie Neues Projekt hinzufügen. Wechseln Sie zu der SharePoint-2010 Vorlagen, und wählen Sie leeres SharePoint-Projekt. Achten Sie darauf, den Assistenten Neues Projekt behalten die Standardeinstellung zum Erstellen des Projekts als in einer Sandbox ausgeführten Lösung. Dies ist eine bewährte Methode, und bietet Ihnen die flexibelste und sichere Bereitstellungsoptionen. Silverlight kann auch gut mit isolierten Lösungen, da Silverlight auf dem Client ausgeführt und ist nicht als serverseitige Code in der Sandbox ausgeführt auf viele der Einschränkungen beschränkt.

Obwohl die Bestellung tatsächlich spielt, ist es besser, erstellen Sie zunächst das Webpart. So aktivieren Sie das Modul zu schachteln, das die Silverlight-XAP-Datei unter dem Webpart bereitstellen. Dadurch wird nur die Projektstruktur strukturiert und wie Ihre Lösungen größere übersichtlicher.

Fügen Sie das Webpart dem SharePoint-Projekt hinzu, indem Sie mit der rechten Maustaste auf das Projekt und neues Element hinzufügen. Wählen Sie aus den Vorlagenordner 2010 SharePoint Webpart. Dadurch wird eine neue leere Webpart im Projekt erstellt.

Ein Webpart umfasst nur drei Elemente. Die erste ist die Datei Elements.xml. Dies ist eine SharePoint-Lösungsdatei, die die Elemente in einer Funktion beschreibt.

Die zweite ist die Webpart-Definitionsdatei, die Erweiterung .webpart. Diese Datei wird in den Katalog der SharePoint-Webparts bereitgestellt und definiert den Code für den Webpart, und alle Eigenschaften des Webparts.

Die dritte Datei ist die Codedatei. Alle drei dieser Dateien befinden sich in einem Ordner in der Projektstruktur.

Das ist also, wo es interessant erhält. Alle Dateien, die dem Projekt, beim Erstellen eines neuen Webparts hinzugefügt werden, sind erforderlich, wenn Sie ein Webpart von Grund auf neu erstellen. In diesem Fall müssen Sie alle automatisch generierten Dateien verwendet werden, da SharePoint bereits mit einem Silverlight-Webpart enthalten ist. Was möchten Sie tun, ist dieses vorhandenen Webparts zu erstellen. Dazu müssen Sie lediglich die .webpart-Datei, zeigen Sie den Code für das Silverlight-Webpart und enthalten alle Eigenschaften vornehmen.

Erstellen Sie eine Kopie der integrierten Silverlight-Webpart .webpart-Datei. Es ist tatsächlich ein automatisches Verfahren dazu. Fügen Sie eine Silverlight-Webpart zu einer beliebigen Seite in SharePoint. Während Sie sich im Entwurfsmodus befinden, klicken Sie auf das Dropdown-Menü des Webparts, und wählen Sie exportieren. Dadurch können Sie eine Kopie der .webpart-Datei zu erstellen, die Sie dem Projekt hinzufügen können. Jetzt nur ändern Sie einige Eigenschaften, wie z. B. der Pfad zum Silverlight-Anwendung wie Titel, Beschreibung usw.. Auch, da Sie jetzt den Code für den Webpart aus integrierten Microsoft.SharePoint.DLL verwenden, brauchen Sie nicht mehr die CS-Datei für den Webpart. Sie können diese Datei einfach löschen. Abbildung 6 zeigt ein Beispiel für die .webpart-Datei folgendermaßen aussehen wird Sie dem Projekt hinzufügen.

Abbildung 6 Auszug aus der Standard-.webpart-Datei

<webParts>
  <webPart xmlns="https://schemas.microsoft.com/WebPart/v3">
    <metaData>
      <type name="Microsoft.SharePoint.WebPartPages.SilverlightWebPart, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
      <importErrorMessage>$Resources:core,ImportErrorMessage;
      </importErrorMessage>
    </metaData>
    <data>
      <properties>
        <property name="HelpUrl" 
                  type="string" />
        <property name="AllowClose" 
                  type="bool">True</property>
        <property name="ExportMode" 
                  type="exportmode">All</property>
        <property name="Hidden" 
                  type="bool">False</property>
        <property name="AllowEdit" 
                  type="bool">True</property>
        <property name="Description" 
                  type="string">Contacts Web Part</property>
        ...
        <property name="Height" 
                  type="unit">480px</property>
        <property name="ChromeType" 
                  type="chrometype">None</property>
        <property name="Width" 
                  type="unit">640px</property>
        <property name="Title" 
                  type="string">Contacts Demo</property>
        <property name="ChromeState" 
                  type="chromestate">Normal</property>
        <property name="TitleUrl" 
                  type="string" />
        <property name="Url" 
                  type="string">
        ~site/_catalogs/masterpage/SilverlightApplication1.xap
        </property>
        <property name="WindowlessMode" 
                  type="bool">True</property>
      </properties>
    </data>
  </webPart>
</webParts>

Bereitstellen von Silverlight für SharePoint

Zu diesem Zeitpunkt haben Sie eine voll funktionsfähige Silverlight-Anwendung und einen Webpart zum Hosten der Silverlight-Anwendung. Jetzt müssen Sie zum Erstellen eines SharePoint-Moduls die aktuelle Silverlight-XAP-Datei in SharePoint bereitgestellt.

Visual Studio 2010 verfügt über integrierte Funktionen, die dazu, so einfach alles einbinden ist. Mit der rechten Maustaste auf den Webpart-Ordner, und wählen Sie die Option Neues Element hinzufügen. Wählen Sie aus den Vorlagen für SharePoint 2010 Module-Vorlage aus.

Ein neues Modul enthält standardmäßig eine elements.xml-Datei genau wie der Sie das Webpart Feature hinzugefügt. Außerdem enthält er eine Datei sample.txt. Löschen Sie die Datei sample.txt aus, da Sie es nicht benötigen.

Es ist eine besondere Möglichkeit, in Ihrem Projekt einen Verweis auf die Silverlight-Anwendung hinzufügen. Wählen Sie im Projektmappen-Explorer den Ordner Module und zuzeigen Sie Ihre Eigenschaften an. Klicken Sie auf die Ausgabe von Projektverweisen-Eigenschaft, um das Dialogfeld Ausgabe Projektverweise zu öffnen. Klicken Sie im Dialogfeld auf die Schaltfläche hinzufügen, um einen neuen Verweis hinzufügen. Wählen Sie im Dropdownmenü Projektname Silverlight-Anwendungsprojekt. Legen Sie den Bereitstellungstyp auf Ele ­ mentar Datei, und schließen Sie das Dialogfeld.

Sie haben nun einen Verweis auf die Silverlight-Anwendung hinzugefügt werden. Dies funktioniert ähnlich wie standardmäßige Projektverweise, in dem das Silverlight-Projekt wird vor dem SharePoint-Projekt erstellt, und die Ausgabe von Silverlight-Projekten (die XAP-Datei) auf der SharePoint-Projekt kopiert und in die SharePoint-Lösungsdatei (die .wsp-Datei) integriert werden.

Der letzte Schritt besteht darin, den Bereitstellungspfad der Silverlight-Anwendung festgelegt. Dies ist der Speicherort in der XAP-Datei kopiert wird, und den Speicherort, aus dem das Webpart die Anwendung laden.

Öffnen Sie die elements.xml-Datei unter dem Ordner Module. Legen Sie die URL-Eigenschaft des File-Elements auf die URL-Eigenschaft in der .webpart-Datei identisch sein. In diesem Fall, die Sie der Masterseite bereitstellen Katalog also auf eingestellt:

~site/_catalogs/masterpage/
  SilverlightApplication1.xap

Hinweis Die Tilde am Anfang des Pfads ist eine spezielle SharePoint Platzhalterzeichen im Stammverzeichnis der Website an.

Nun Bereitstellen der Lösung mit SharePoint, um sicherzustellen, dass alles richtig eingerichtet ist. Legen Sie das SharePoint-Projekt als Startprojekt Standard aus, und drücken Sie F5. Visual Studio erstellt und die Lösung verpacken. Obwohl Visual Studio wird die SharePoint-Website öffnen und den Debugger anfügen, müssen Sie das Webpart zur Seite hinzufügen. Ich finde die einfachste Möglichkeit, dies zu tun, während mein Lösungen entwickeln besteht darin, das Webpart zu einer neuen Site-Seite hinzufügen.

Client-Objektmodell

Alles eingerichtet ist können Sie die Silverlight-Anwendung tatsächlich SharePoint-Daten zu verbinden. SharePoint 2010 enthält clientseitige Objektmodelle für die CLR und Silverlight ECMAScript. Diese einfachen Zugriff, die vertraute-Objektmodell zu SharePoint-Daten, z. B. Listen und Bibliotheken mit zu aktivieren.

In diesem speziellen Fall erstellen Sie eine Silverlight-Anwendung müssen Sie einen Verweis auf das Objektmodell für Silverlight-Clients hinzufügen. Silverlight-Client-Objektmodell besteht aus zwei Dateien, Microsoft.Share ­ Point.Client.Silverlight.dll und Microsoft.SharePoint.Client.Silverlight.Runtime.dll. Diese Dateien befinden sich im Ordner Programme\Gemeinsame Dateien\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin\.

Sobald Sie die Verweise hinzugefügt haben, können Sie den Code zum Abrufen der Kontakte aus der Kontaktliste schreiben. Starten durch Hinzufügen einer using-Anweisung für Microsoft.SharePoint.Client am oberen Rand der MainPage.xaml.cs. Anschließend müssen Sie einige Felder auf Klassenebene, um die zurückgegebenen Ergebnisse enthalten definieren. Außerdem müssen Sie die Seite geladen, Ereignisbehandlung, die verwendet wird, um die Liste der Daten zu laden:

public partial class MainPage : UserControl {
  ClientContext ctx;
  ListItemCollection contactsListItems;
  public MainPage() {
    InitializeComponent();
    this.Loaded += MainPage_Loaded;
  }
  void MainPage_Loaded(
    object sender, RoutedEventArgs e) {
    LoadList();
  }
}

Implementieren Sie anschließend die LoadList-Methode zum Abrufen der Daten aus SharePoint. Zuerst rufen Sie einen Verweis auf den aktuellen Clientkontext für den. Die statische Methode ClientContext.Current gibt einen Kontext zurück, auf die Website, die das Webpart geladen wird. Anschließend rufen Sie einen Verweis auf die Kontaktliste erhalten GetByTitle. Die Load-Methode wird die Anforderung zur Abfrage hinzufügen. Rufen Sie anschließend ExecuteQueryAnsc auf dem SharePoint-Server aufrufen:

void LoadList(){
  ctx = ClientContext.Current;
  if (ctx != null) { //null if not in SharePoint
    List contactsList = 
      ctx.Web.Lists.GetByTitle("Contacts");
    contactsListItems =
      contactsList.GetItems(
      CamlQuery.CreateAllItemsQuery());
    ctx.Load(contactsListItems);
    ctx.ExecuteQueryAsync(
      ContactsLoaded, ContactsLoadedFail);
  }
}

Aufrufe an den Server in Silverlight sind asynchron. Die EXE-Datei ­ niedlich ­­ QueryAsync-Methode zwei Callback-Delegaten für akzeptiert wurde erfolgreich abgeschlossen und eine für die Ergebnisse fehlgeschlagen. In der Rückrufmethode ContactsLoaded binden Sie Daten, die Ergebnisse an die XAML-Syntax, die am Anfang dieses Artikels der Silverlight-Designer erstellt. In der Rückruf erfolgreich war müssen Sie, festlegen die ItemsSource-Eigenschaft des Listenfeldes der Kontakte-Auflistung, die vom Client-Objektmodell zurückgegeben. Der Rückruf tritt auch in einem Hintergrundthread, daher Sie die Eigenschaft innerhalb der BeginInvoke-Methode des Dispatchers aktualisieren müssen:

// ContactsLoaded
void ContactsLoaded(object sender, 
  ClientRequestSucceededEventArgs args) {
  //call back on the UI thread
  this.Dispatcher.BeginInvoke(() => {
    ContactsListBox.ItemsSource = contactsListItems;
  });
}

Ich links die fehlgeschlagene Rückruffunktion für Sie implementieren.

Es gibt noch etwas, Sie vor Ausführen der Anwendung müssen: Sie müssen zu ändern, wie Silverlight an die Datenquelle gebunden wird. Beachten Sie, dass am Anfang des Artikels erstellte XML-Datei, die die Daten aus SharePoint dargestellt, aber dies ist genau die gleichen Daten nicht, da das SharePoint-Objektmodell Client tatsächlich eine Wörterbuch Feldwerte-Auflistung zurückgibt.

Eines der neuen Features von Silverlight 4 ist die Fähigkeit, Indexer zu binden. Dadurch können Sie die Datenbindung im Wörterbuch-Werten, die vom Client-Objektmodell mit dem Namen des Werts des Schlüssels als eine Zeichenfolge, die den Befehl Bindung zurückgegeben. Leider gibt es eine gute Möglichkeit für den Umgang mit Beispieldaten in diesem komplexen Wörterbuch nicht, aber es ist relativ einfach, um die Bindungen hin-und mit den Visual Studio-suchen und Ersetzen von Tools. Beispielsweise müssen Sie das Text ändern = "{Binding Title}" Text = "{Binding Pfad FieldValues [Titel] =}". Tun Sie dies für alle Felder. Ich habe den regulären Ausdruckscode hin und her wechseln im Beispielcode zu diesem Artikel enthalten.

Wenn Sie alle Bindungen die Silverlight-4-Indexer-Bindung verwenden geändert haben, können Sie die Anwendung ausführen. Navigieren Sie zu der Seite Website zum Hosten der Silverlight-Anwendung erstellt. Es sollte der Darstellung, die Sie am Anfang des Artikels gesehen haben Abbildung 1 .

Dynamisch geladene Client-Objektmodell

Die Anwendung ist jetzt abgeschlossen, aber es gibt noch etwas angezeigt werden soll. Dies ist eine Änderung an SharePoint seit Beta-Version. Beim Erstellen eines Verweises auf das Silverlight-Client-Objektmodell durch Durchsuchen von Dateien über das Dialogfeld hinzufügen Verweise von Visual Studio standardmäßig enthält Visual Studio diese beiden Dateien im XAP-Paket, das Sie erstellt. Dadurch wird Ihre Silverlight-Paket eine zusätzliche 407 KB hinzugefügt.

Eine bessere Option besteht darin, diese Assemblys zur Laufzeit dynamisch zu laden. Dadurch kann den Browser zwischengespeichert werden diese gemeinsamen Dateien, reduzieren die Größe Ihrer Anwendung und die Ladezeiten während die Leistung Ihrer Anwendungen zu erhöhen.

Seit der Betaversion von SharePoint verpackt SharePoint die Objektdateien Modell zwei Clients in eine einzelne XAP-Datei Microsoft.SharePoint.Client.xap aufgerufen. Diese Datei wird am selben Speicherort wie die anderen Client Modell Objektdateien, Ordner c:\Programme\Gemeinsame Dateien\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin. Sie müssen noch einen Verweis auf die Client-Objektdateien Modell hinzugefügt werden, da dies ermöglichen es Ihnen, die IntelliSense und Kompilieren der Unterstützung, die Sie benötigen. Jedoch müssen Sie jede Datei im Ordner "Verweise" Silverlight-Anwendung wählen, und setzen Sie die Eigenschaft lokale Kopie auf False. Wird dies auf False festgelegt wird verhindert, dass Visual Studio diese Dateien in das XAP-Paket hinzufügen.

Als Nächstes müssen Sie Code hinzufügen, um die Client-Objektmodell Assemblys dynamisch zu laden. Dies ist sehr allgemeiner Code und kann in eine Silverlight-Anwendung auf ein XAP-Paket mit kleinen Änderungen verwendet werden. Starten Sie durch Ändern des Seite geladen-Ereignis aufrufen, den Code herunterladen und die Assemblys zu laden. In diesem Beispiel wird einen Callback-Delegaten LoadList-Methode übergeben. Auf diese Weise werden die Assemblys geladen und kann verwendet werden, Sie müssen dann Laden der Listendaten aus SharePoint, etwa so:

void MainPage_Loaded(
  object sender, RoutedEventArgs e) {
  LoadClientOM loadClientOM = 
    new LoadClientOM(delegate() { LoadList(); });
  loadClientOM.Run();
}

Fügen Sie eine neue Klassendatei zu Ihrem Projekt LoadClientOM.cs aufgerufen, und den in Abbildung 7 Code hinzu. Dieser Code verwendet die WebClient das XAP-Paket von /_layouts/clientbin/Microsoft.SharePoint.Client.xap downloaden. Wenn das Paket gedownloadet wurde, können Sie jede Assembly aus dem Paket geladen.

Abbildung 7 Laden Microsoft.SharePoint.Client.xap

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.IO;
using System.Windows.Resources;
using System.Reflection;
namespace SilverlightApplication1 {
  public class LoadClientOM {
    private bool isDownloaded = false;
    private Action action;
    public LoadClientOM(Action action) {
      this.action = action;
    }
    public void Run() {
      WebClient client = new WebClient();
      client.OpenReadCompleted += 
        new OpenReadCompletedEventHandler(
        client_OpenReadCompleted);
      client.OpenReadAsync(new Uri(
        "/_layouts/clientbin/Microsoft.SharePoint.Client.xap", 
        UriKind.Relative));
    }
    void client_OpenReadCompleted(object sender, 
      OpenReadCompletedEventArgs e) {
      Stream assemblyStream;
      AssemblyPart assemblyPart;
      assemblyStream = Application.GetResourceStream(
        new StreamResourceInfo(e.Result, "application/binary"), 
        new Uri("Microsoft.SharePoint.Client.Silverlight.Runtime.dll", 
        UriKind.Relative)).Stream;
      assemblyPart = new AssemblyPart();
      Assembly b = assemblyPart.Load(assemblyStream);
      assemblyStream = Application.GetResourceStream(
        new StreamResourceInfo(e.Result, "application/binary"), 
        new Uri("Microsoft.SharePoint.Client.Silverlight.dll", 
        UriKind.Relative)).Stream;
      assemblyPart = new AssemblyPart();
      Assembly a = assemblyPart.Load(assemblyStream);
      this.isDownloaded = true;
      if (action != null) {
        action();
      }
    }
  }
}

Sie können nun die Anwendung erneut ausführen. Sie werden feststellen, dass die Anwendung genau gleich sieht, aber jetzt Sie das Silverlight-Objektmodell Client dynamisch zur Laufzeit vom Server laden sind. Es kann schwierig sein, in dieser einfachen Anwendung erkennen, jedoch sollte auch eine bessere Leistung beim dynamischen Laden angezeigt.

Paul Stubbs  ist eine technische Microsoft-Evangelist, konzentriert sich auf die Informationen Worker-Entwicklercommunity für SharePoint "und" Office "," Silverlight "und" Web 2.0 soziale Netzwerke. Er hat drei Bücher über die Entwicklung von Lösungen mit Office, SharePoint und Silverlight verfasst. Lesen Sie seinen Blog unter blogs.msdn.com/b/pstubbs-.

Dank an die folgenden technischen Experten für die Überprüfung der in diesem Artikel: Mike Morton , John Papa und Unni Ravindranathan