Zugreifen auf SharePoint 2010-Daten mit dem .NET-Clientobjektmodell

SharePoint-Videotutorial

Zusammenfassung: Informationen zum Lesen und Schreiben von Daten in SharePoint-Websites von Microsoft .NET Framework-basierten Anwendungen aus mithilfe des verwalteten Clientobjektmodells von Microsoft SharePoint 2010.

Letzte Änderung: Mittwoch, 12. September 2012

Gilt für: SharePoint Foundation 2010 | SharePoint Server 2010 | Visual Studio | Visual Studio 2008 | Visual Studio 2010

**Bereitgestellt von:**Andrew Connell, MVP, Critical Path Training

Übersicht

Bei jeder Version von Microsoft SharePoint fordern Entwickler zusätzliche Webdienste an, um das Lesen und Schreiben von SharePoint-Websitedaten über benutzerdefinierten Code, der nicht auf dem Server mit SharePoint ausgeführt wird, zu vereinfachen. Anstatt immer mehr Webdienste zu entwickeln, hat Microsoft in SharePoint 2010 das Clientobjektmodell mit vielen vertrauten häufig verwendeten Objekten eingeführt. Das Clientobjektmodell ist weitgehend mit dem SharePoint-Serverobjektmodell vergleichbar. In diesem SharePoint-Videotutorial erfahren Sie, wie Sie das .NET-Clientobjektmodell von SharePoint 2010 verwenden.

Code schreiben

Fügen Sie in Ihrem Projekt Verweise auf die beiden erforderlichen Assemblys hinzu, aus denen das .NET-Clientobjektmodell besteht. Diese beiden Assemblys (Microsoft.SharePoint.Client.dll und Microsoft.SharePoint.Client.Runtime.dll) befinden sich im ISAPI-Ordner von %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\.

Stellen Sie eine Verbindung mit SharePoint her, und rufen Sie Daten ab. Das Beispiel in diesem Video veranschaulicht, wie Sie eine Liste von Produktkategorien aus einer SharePoint-Liste abrufen. Die gesamte Kommunikation konzentriert sich auf das ClientContext-Objekt. Dieses Objekt ist für das Herstellen einer Verbindung mit dem Server und das Senden aller Befehle in der Warteschlange zur Verarbeitung zuständig.

Nachdem Sie mithilfe der ClientContext.Load-Methode oder der ClientContext.LoadQuery-Methode der Warteschlange Anweisungen hinzugefügt haben, wird mit einem Aufruf der ClientContext.ExecuteQuery-Methode die Rückkommunikation mit dem Server ausgelöst. Bei der Beispielanwendung in diesem Videotutorial handelt es sich um eine Windows Presentation Foundation-Anwendung (WPF). Im Gegensatz zum Microsoft Silverlight-Clientobjektmodell enthält das .NET-Clientobjektmodell keine asynchrone Version der ExecuteQuery-Methode. Verwenden Sie deshalb zum Erstellen einer benutzerfreundlichen Anwendung die ThreadPool.QueueUserWorkItem-Methode für die Kommunikation mit SharePoint in einem Hintergrundthread. Nach Abschluss des Threads wird mithilfe von Dispatcher ein Delegat an den Ausgangsthread zurückgesendet, um die Benutzeroberfläche zu aktualisieren. Durch diese Technik wird verhindert, dass die Benutzeroberfläche nicht mehr reagiert, während auf das Abschließen der ExecuteQuery-Methode gewartet wird.

ClientContext  _clientContext = new ClientContext("http://intranet.wingtip.com");
[...]
private void MainWindow_ConnectedStatusChanged(object sender, EventArgs e)
{
    if (this.IsConnected)
    {
        // Start async call on background thread
        // to avoid blocking UI thread.
        ThreadPool.QueueUserWorkItem(LoadProductCategories);
    }
}
private void LoadProductCategories(object state)
{
    SP.List categoryList = _clientContext.Web.Lists.GetByTitle("Product Categories");

    SP.CamlQuery query = new SP.CamlQuery();
    query.ViewXml = 
      "<View><Query><OrderBy><FieldRef Name='Title' /></OrderBy></Query></View>";
    _productCategories = categoryList.GetItems(query);

    _clientContext.Load(_productCategories);
    _clientContext.ExecuteQuery();

    // Start the UI work on another thread.
    this.Dispatcher.BeginInvoke(new Action(LoadProductCategoriesUIUpdater), 
                                DispatcherPriority.Normal);
}
private void LoadProductCategoriesUIUpdater()
{
    if (_productCategories != null)
        ProductCategoriesListBox.ItemsSource = _productCategories;
}

Hinzufügen von Listenelementen

Eine weitere hilfreiche Technik ist das Hinzufügen von Elementen zu SharePoint-Listen. Hierzu werden Erstellungsinformationsobjekte verwendet – für Listenelemente das ListItemCreationInformation-Objekt. Mithilfe dieses Objekts können Sie ein Listenelement erstellen, die Felder des neuen Listenelements aktualisieren und die Änderungen speichern.

List products = _clientContext.Web.Lists.GetByTitle("Products");
ListItemCreationInformation newProductInfo = new ListItemCreationInformation();

ListItem newProduct = products.AddItem(newProductInfo);

// Dialog is a child dialog window that displays a form with a few controls.
newProduct["Title"] = dialog.ProductNameTextBox.Text;
newProduct["Product_x0020_Number"] = 
  dialog.ProductNumberTextBox.Text;
newProduct["Price"] = dialog.ProductPriceTextBox.Text;
FieldLookupValue fieldValue = new FieldLookupValue();
foreach (ListItem item in Global.ProductCategories)
    if (item["Title"].ToString() == 
      dialog.ProductCategortyComboBox.SelectedItem.ToString())
    {
        fieldValue.LookupId = item.Id;
    }
newProduct["Category"] = fieldValue;

newProduct.Update();

// Update the user interface by calling back to the original thread.
this.Dispatcher.BeginInvoke(new Action(OnProducteditorAddUIUpdater), 
  DispatcherPriority.Normal); 
Lesen

Das Clientobjektmodell in SharePoint 2010 vereinfacht die programmgesteuerte Interaktion mit SharePoint-Websites über benutzerdefinierten Code, der nicht auf demselben Server wie SharePoint 2010 ausgeführt wird. In diesem Videotutorial erfahren Sie, wie Sie das .NET-Clientobjektmodell von zum Erstellen einer WPF-Anwendung verwenden, die direkt mit SharePoint kommuniziert. Anstelle der traditionellen Methode mit Webdiensten stellt das Clientobjektmodell ein umfangreiches, SharePoint-spezifisches Objektmodell dar, das weitgehend mit dem SharePoint 2010-Serverobjektmodell übereinstimmt.

Anzeigen

Video ansehen

Video anschauen (00:21:36)

Klicken Sie hier, um den Code abzurufen

Code abrufen

Erforschen

Informationen zum Autor

MVP-MitwirkenderMVP Andrew Connell ist Autor, Trainer und Mitbegründer von Critical Path Training, ein auf SharePoint-Schulungen spezialisiertes Unternehmen. Andrew Connell wurde von Microsoft sechsmal als MVP (Most Valuable Professional) (2005-2010) für Microsoft Content Management Server (MCMS) und Microsoft SharePoint Server ausgezeichnet. Er hat im Laufe der Jahre zahlreiche Bücher zu MCMS und SharePoint verfasst bzw. daran mitgearbeitet, beispielsweise sein Buch "Professional SharePoint 2007 Web Content Management Development" von WROX. Andrew Connell referiert auf Konferenzen (z. B. Tech-Ed, SharePoint Connections, VSLive, SharePoint Best Practice Conference, SharePoint Evolutions Conference, Office Developer Conference und Microsoft SharePoint Conference) in den USA, in Australien, England und Spanien über die SharePoint-Entwicklung und über WCM. Andrew Connell blogt unter Andrew Connell-Blog und auf Twitter @andrewconnell.