2 Das SharePoint-Objektmodell
Das SharePoint-Objektmodell ermöglicht einen vollständigen Zugriff auf alle Funktionen und Inhalte einer SharePoint Farm. Alle Aktionen, dieüber die SharePoint-Oberfläche durch einen Benutzer durchgeführt werden können, sind auchüber das SharePoint-Objektmodell realisierbar. Daher ist es für einen SharePoint-Entwickler essenziell wichtig, das Objektmodell und dessen Aufbau zu kennen. Da das verfügbare Objektmodell die vollständige Kontrolle und Interaktion mit dem SharePoint Server zulässt, ist es auch entsprechend umfänglich. Das Objektmodell ist in ca. 50 Namensräumen (Namespaces) gegliedert, wobei lediglich 16 davon für dienormale SharePoint-Entwicklung relevant sind. Zudem sind einige Verwendungsregeln zu beachten, wenn aus eigenem Code heraus auf das Objektmodell zugegriffen wird. Dieses Kapitel gibt im ersten Teil einenÜberblicküber die SharePoint-Struktur, und im zweiten Teil werden die verschiedenen verfügbaren Objektmodelle erläutert.
Hinweis: Die einzelnen Beispiele stellen nur einen kleinen Ausschnitt der Möglichkeiten dar, die mit dem vorhandenen Client/Server-Objektmodell umgesetzt werden können. Die einzelnen Kapitel in diesem Buch verwenden jeweils unterschiedliche SharePoint-Funktionen. Ziel der Beispiele ist es, die generelle Funktionsweise und die Möglichkeiten aufzuzeigen. Auf eine detaillierte Aufzählung aller Klassenmitglieder wurde bewusst verzichtet. Sie können der (Online-)MSDN-Bibliothek entnommen werden.
2.1 SharePoint-Struktur
Wie jedes andere Server- bzw. Anwendungssystem besitzt auch SharePoint eine Systemarchitektur. Im SharePoint-Bereich existieren zwei wesentliche Architekturmodelle bzw. Architektursichten. Zum einen handelt es sich dabei um die physikalische Serverarchitektur und zum anderen um die logische Seitenarchitektur, die auch als Seitenhierarchie bezeichnet wird. Um ein gutes Verständnis für das eigentliche Objektmodell zu erhalten, ist es im Vorfeld wichtig, die Server- und Seitenarchitektur zu verstehen. Sind diese Architekturen bekannt, kann daraus sehr gut das Objektmodell abgeleitet werden. Anhand der beiden Architektursichten werden die verschiedenen Objektabhängigkeiten deutlich und ermöglichen so eine einfache Navigation zwischen den Objekten. Dies ist ein wenig vergleichbar mit einem klassischen Datenbankmodell und den darin enthaltenen Tabellen. Erst wenn die Datenbankstruktur bekannt ist, können effizient Daten verknüpft und abgerufen werden. In den beiden folgenden Kapiteln werden daher die beiden Architekturen erläutert.
Hinweis: Das obere Datenbankbeispiel bezieht sich nicht auf die internen SharePoint-Datenbanken. Diese Datenbanken sollten niemals direkt manipuliert werden. JeglicheÄnderungen müssen immerüber das Objektmodell– also das API– durchgeführt werden.
2.1.1 Serverarchitektur
Die Serverarchitektur beschreibt die physikalische Verteilung einer SharePoint Farm. Dabei stehen die einzelnen Server im Mittelpunkt der Betrachtung. Im ersten Kapitel wurden die verschiedenen Möglichkeiten für eine SharePoint-Entwicklungsumgebung dargestellt. Werden alle Komponenten auf einem Server installiert, besteht die gesamte Serverarchitektur lediglich aus einem Server. Bei größeren Bereitstellungen im Enterprise-Umfeld sieht es allerdings schon anders aus. So finden sich im Enterprise-Umfeld nicht selten Anforderungen, mehr als 10 000 Benutzer unterstützen zu müssen. Das ist nur dann möglich, wenn die SharePoint Farm entsprechend groß dimensioniert ist. Die verschiedenen Serverrollen werden also auf mehrere Server physikalisch verteilt. Mithilfe der Serverarchitektur kann die notwendige Verteilung geplant und beschrieben werden. Abbildung 2.1 zeigt dazu eine typische SharePoint-Foundation-Serverarchitektur. Nachfolgend werden die einzelnen Bestandteile und die zugehörigen Klassen aus dem Objektmodell beschrieben. Detaillierte Informationen zu den einzelnen Klassen sind in den Unterkapiteln 2.2 und 2.3 zu finden.
Abbildung 2.1: SharePoint-Foundation-Serverarchitektur1
Wie erkennbar ist, steht an oberster Stelle der Architektur die SharePoint Farm. Ein programmatischer Zugriff istüber das korrespondierendeObjekt SPFarm möglich.Über ein gültigesSPFarm-Objekt könnenüber die Eigenschaft Servers die verfügbaren Server abgefragt werden. Die Eigenschaft Servers gibt dazu eine Liste vonSPServer-Objekten zurück. Jedes Objekt repräsentiert einen physikalischen Server aus der zugehörigen SharePoint Farm. Die einzelnen verfügbaren Dienste auf einem physikalischen Server sindüber die EigenschaftServiceInstances abrufbar, die eine Liste vonSPServiceInstance-Objekten enthält. Eine Instanz vom TypSPDatabaseServiceInstance stellt eine einzelne Instanz eines Datenbankdienstes dar. Die KlasseSPDatabaseServi