Kurzübersicht über das SharePoint-Objektmodell

Dies ist der vierte einer Reihe von Artikeln über die Grundlagen der Entwicklung von vom Anbieter gehosteten SharePoint-Add-Ins. Machen Sie sich zunächst mit SharePoint-Add-Ins und den vorherigen Artikeln dieser Reihe vertraut, die Sie unter Erste Schritte beim Erstellen von von einem Anbieter gehosteten SharePoint-Add-Ins finden.

Hinweis

Wenn Sie unsere Artikelreihe zum Thema anbietergehostete Add-Ins durchgearbeitet haben, haben Sie bereits eine Visual Studio-Lösung, die Sie für diesen Artikel verwenden können. Sie können auch das Repository unter SharePoint_Provider-hosted_Add-Ins_Tutorials herunterladen und die Datei BeforeSharePointWriteOps.sln öffnen.

In diesem Artikel legen Sie eine kurze Pause vom Codieren ein, um einen schnellen Überblick über das SharePoint-Clientobjektmodell (CSOM) zu erhalten. Dieses Modell ist durch Referenzthemen, Vorgehensweisen und Codebeispiele ausführlich und gut in MSDN dokumentiert. In diesem Artikel können wir nur einen ganz kurzen Einblick liefern. Doch selbst eine sehr kurze Einführung wird bewirken, dass Ihnen ein Großteil des Codes dieser Reihe weitaus weniger rätselhaft erscheint.

Inhaltshierarchie

Die folgende Tabelle zeigt die Hierarchie der Inhalte in SharePoint und deren Darstellung durch CSOM-Klassen. Alle Entitäten verfügen über untergeordnete Dateien.

Entität Klasse Bemerkungen
Lokale SharePoint-Serverfarm oder SharePoint Online-Abonnement (auch als Mandant bezeichnet) Es gibt nur eingeschränkten programmgesteuerten Zugriff auf diese Ebene in CSOM. Es gibt z. B. keine Klasse „Farm“ oder „Abonnements“ oder „Mandant“. (Das serverseitige SharePoint-Objektmodell, das in Add-Ins nicht verwendet werden kann, ermöglicht den programmgesteuerten Zugriff auf diese Entitäten.)
Websitesammlung Website Eine Sammlung von Websites, die hauptsächlich aus administrativen Gründen und zum Unterbringen von SharePoint-Komponenten wie firmenspezifischen Masterseiten oder benutzerdefinierten Sicherheitsgruppen gruppiert werden und für alle untergeordneten Websites angewendet werden können. Alle Websites gehören zu einer Websitesammlung.
Website Web Ein Satz von Seiten und SharePoint-Komponenten. Kann Unterwebsites haben.
Liste List Dokumentbibliotheken und andere Arten von Dateibibliotheken sind ebenfalls auf dieser Ebene. Eine Dokumentbibliothek ist eine besondere Art von Liste, in der jede Zeile ein angefügtes Dokument enthält und die anderen Spalten Daten über das Dokument sind, z. B. der Autor, wenn es zuletzt bearbeitet wurde und wer es ausgecheckt hat.
Listenelement ListItem Eine Zeile in einer Liste – d. h. ein Listenelement – mit bestimmten Werten in den Feldern der Zeile. Verfügt auch über einen -Typ. Siehe nächste Zeile.
Listenelement Inhaltstyp Der Typ eines Listenelements. Diese werden durch die ContentType-Klasse dargestellt. Jede ist im Grunde ein Satz von Spalten und Metadaten. Am einfachsten ist der integrierte Elementinhaltstyp . Alle anderen Inhaltstypen werden von Item abgeleitet. SharePoint enthält viele integrierte Inhaltstypen, z. B. Ereignis und Ankündigung.
Spalte Field Ein Field-Objekt enthält nicht nur Informationen zum zugrunde liegenden Datentyp, sondern auch Informationen darüber, wie die Daten formatiert und in Formularen gerendert werden, z. B. in Formularen zum Erstellen, Anzeigen und Bearbeiten bestimmter Listenelemente.

Sie können benutzerdefinierte Listen, Inhaltstypen, Spaltentypen und Listenelemente programmgesteuert erstellen.

Zusätzlich zum Inhalt ermöglicht das CSOM den Zugriff auf Benutzer, Gruppen, Rollen und Berechtigungen, Taxonomie, Suche und mehr.

Clientseitige Runtime und Batchverarbeitung

CSOM verwendet ein Batchverarbeitungssystem. Datenteile aus verwaltetem Code werden in XML-Code konvertiert und in einer einzelnen HTTP-Anforderung an den Server gesendet. Für jeden Befehl erfolgt ein entsprechender Serverobjektmodell-Aufruf, und der Server gibt eine Antwort an den Client im Format JavaScript Object Notation (JSON) zurück.

SharePoint-Code auf einem Client beginnt mit dem Abrufen eines Clientkontextobjekts, das den aktuellen Anforderungskontext darstellt, einschließlich der Identität der SharePoint-Website (und ihrer übergeordneten Websitesammlung). Durch diesen Kontext können Sie Zugriff auf CSOM-Objekte erhalten. Im Folgenden ist die grundlegende Struktur abgebildet, die Sie immer wieder sehen werden.

  using (var clientContext = spContext.CreateUserClientContextForSPHost())
  {
      // CRUD operation or query code goes here.

      clientContext.ExecuteQuery();
  }

Beachten Sie Folgendes bei diesem Code:

  • Das spContext-Objekt ist vom Typ SharePointContext und in der Datei SharePointContext.cs (oder .vb) definiert, die von den Office Developer Tools für Visual Studio generiert wird. Diese Datei kann geändert werden, aber dies ist in den meisten Fällen nicht notwendig. Bei den meisten SharePoint-Add-In-Projekten funktionieren diese Datei und die Datei TokenHelper.cs (oder .vb), die ebenfalls von den Tools generiert wird, effektiv als Erweiterungen des CSOM.

  • Das clientContext-Objekt ist der CSOM-Typ ClientContext.

  • Die ExecuteQuery-Methode bündelt den CRUD-Vorgangscode in einer XML-Nachricht, die an den SharePoint-Server gesendet wird. Dort wird der Code in den entsprechenden serverseitige Modellobjektcode übertragen und ausgeführt.

Im vorherigen Artikel dieser Reihe war ein Beispiel dieses Musters in der gezeigten Methode GetLocalEmployeeName dargestellt.

private string GetLocalEmployeeName()
{
    ListItem localEmployee;

    using (var clientContext = spContext.CreateUserClientContextForSPHost())
    {
        List localEmployeesList = clientContext.Web.Lists.GetByTitle("Local Employees");
        localEmployee = localEmployeesList.GetItemById(listItemID);
        clientContext.Load(localEmployee);
        clientContext.ExecuteQuery();
    }
    return localEmployee["Title"].ToString();
}

Beachten Sie Folgendes zu dieser Methode:

  • Die ersten beiden Zeilen im using-Block scheinen Verweise auf die Liste und das Listenelementobjekt abzurufen. Aber tatsächlich werden diese Zeilen, wenn sie in der clientseitigen SharePoint-Laufzeit ausgeführt werden, einfach in ein XML-Format übersetzt. Die Methode ExecuteQuery sendet diese XML an den Server.

  • Die Methode Load fügt zusätzlich etwas in die Nachricht ein: Sie teilt dem Server mit, das angegebene Objekt an den Client zu senden. Die ExecuteQuery-Methode empfängt dieses Objekt (als JSON) und verwendet es, um die clientseitige Variable localEmployee zu initialisieren. Nachfolgender clientseitiger Code verweist dann auf dieses ListItem-Objekt und seine Elemente. Wie Sie sehen, verweist die nächste Zeile auf den Wert des Feldes "Title" des Elements. Diese Zeile würde eine Ausnahme auslösen, wenn die Laden-Methode nicht aufgerufen worden wäre, da das Objekt erst auf der Clientseite vorhanden ist, nachdem es geladen wurde.

Nächste Schritte

Im nächsten Artikel kehren wir zum Programmieren zurück, und Sie erfahren, wie Sie SharePoint-Schreibvorgänge zum einem vom Anbieter gehosteten Add-In hinzufügen.