SharePoint 2010-Bausteine für Entwickler: Technologien zum Erstellen von SharePoint-Anwendungen (Teil 1 von 2)

Zusammenfassung:   Dieser Artikel bietet Ihnen eine allgemeine Übersicht über die Entwicklung für Microsoft SharePoint 2010. Außerdem erhalten Sie in dieser zweiteiligen Artikelreihe Informationen zu den Bausteinen für SharePoint-Entwickler.

Letzte Änderung: Montag, 9. März 2015

Gilt für: Business Connectivity Services | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio

Inhalt dieses Artikels
Einführung
Grundlegendes zu SharePoint-Anwendungen
Vergleich und Gegenüberstellung der SharePoint-Entwicklung mit anderen Formen der Entwicklung
Sprachen und Plattformen
Kernbegriffe bei der SharePoint-Anwendungsentwicklung
Varianten von SharePoint-Anwendungen
SharePoint-Leistungsvermögen
SharePoint-Entwicklerszenarien
Schlussbemerkung

Bereitgestellt von:   Eric White, Microsoft Corporation

Inhalt

  • Einführung

  • Grundlegendes zu SharePoint-Anwendungen

  • Vergleich und Gegenüberstellung der SharePoint-Entwicklung mit anderen Formen der Entwicklung

  • Sprachen und Plattformen

  • Kernbegriffe bei der SharePoint-Anwendungsentwicklung

  • Varianten von SharePoint-Anwendungen

  • SharePoint-Leistungsvermögen

  • SharePoint-Entwicklerszenarien

  • Schlussbemerkung

Dieser Artikel ist der erste der zweiteiligen Artikelreihe über SharePoint-Bausteine für Entwickler.

Einführung

Sie können verschiedene Sprachen, Frameworks, Objektmodelle und Tools verwenden, um auf der SharePoint 2010-Entwicklungsplattform skalierbare verteilte Webanwendungen zu erstellen. Für einen Entwickler, der noch wenig Erfahrung mit SharePoint hat, kann es schwer zu beurteilen sein, welche Technologien oder Bausteine er zur Implementierung verschiedener Szenarien verwenden soll oder welche Möglichkeiten er überhaupt hat. Dieser Artikel enthält eine allgemeine Übersicht über SharePoint als Entwicklungsplattform sowie einen Vergleich und eine Gegenüberstellung zwischen SharePoint-Entwicklung und anderen Arten der Entwicklung. Außerdem werden die SharePoint-Bausteine für Entwickler erklärt. Dies sind die Technologien, die Sie zum Erstellen einer SharePoint-Anwendung verwenden. Die größte Herausforderung für Sie als SharePoint-Entwickler besteht u. U. darin, zu verstehen, welche Wahlmöglichkeiten Sie bei den Bausteinen haben, und die geeigneten Optionen auszuwählen, die Ihren Zielen hinsichtlich Architektur und Design gerecht werden.

Allgemein gesprochen ist es sinnvoll, die SharePoint-Entwicklung aus unterschiedlichen Blickwinkeln zu betrachten:

  • Welche Gemeinsamkeiten und Unterschiede bestehen zwischen der SharePoint-Entwicklung und anderen Formen der Entwicklung?

    • Entwicklung von skalierbaren, locker gekoppelten ASP.NET-Anwendungen

    • Datenbankanwendungsentwicklung

    • Traditionelle Rich-Client-Entwicklung

  • Welche Sprachen und Frameworks müssen die Entwickler kennen?

  • Wie wirken sich Dokumentformate wie etwa Open XML auf das Anwendungsdesign aus? Welche neuen Szenarien sind möglich?

In diesem Artikel wird davon ausgegangen, dass die Entscheidung für die Entwicklung mit SharePoint bereits vorgegeben ist. In dieser Position befinden sich die meisten Entwickler. In manchen Fällen werden Entwickler einem Projekt zugewiesen, das auf SharePoint aufbaut. In anderen Fällen können die Entwickler ihre Qualifikationen proaktiv weiterentwickeln.

Aus übergeordneter Sicht besteht die Entwicklungsarchitektur von SharePoint 2010 aus mehreren Technologieschichten. Sie ist eine Microsoft ASP.NET-Anwendung, die auf SQL Server aufbaut und unter Windows Server 2008 oder Windows Server 2008 R2 ausgeführt wird. Im folgenden Diagramm sehen Sie, wie mehrere wichtige Bausteine zugrunde liegende Systeme verwenden, um die erforderlichen Funktionen bereitzustellen.

Abbildung 1. Diagramm der wichtigsten Bausteine und zugrunde liegenden Systeme

Diagramm der wichtigsten Bausteine und Systeme

Wenn man einmal die Bandbreite der Technologien betrachtet, die ein SharePoint-Entwickler beherrschen muss, kann das einschüchternd wirken. Als ich in das Thema SharePoint-Entwicklung einstieg, stand ich ungefähr am gleichen Punkt wie viele andere Entwickler, die sich zum ersten Mal mit SharePoint-Entwicklung beschäftigen. Ich war ein kompetenter Entwickler mit gründlicher Erfahrung in manchen Gebieten, passabler Erfahrung in anderen Gebieten und flüchtigen Kenntnissen in vielen anderen Bereichen.

Ich beherrschte folgende Technologien:

  • Microsoft Visual C++

  • Microsoft Visual C#

  • Microsoft .NET Framework

  • LINQ

  • SQL

  • XML

  • Open XML

In folgenden Bereichen musste ich meine Kenntnisse vertiefen:

  • ASP.NET

  • ASP.NET-Designs und -Skins

  • HTML und CSS

  • ECMAScript (JavaScript, JScript)

  • ASP.NET-Webparts

  • Internetinformationsdienste (Internet Information Services, IIS)

Obwohl ich die Architektur verstand, musste ich mir als Entwickler folgende Technologien gründlich aneignen:

  • SharePoint-Objektmodell

  • Verwaltetes Clientobjektmodell von SharePoint

  • Microsoft Silverlight und XAML

  • Workflows

  • Windows Communication Foundation (WCF)- und Webdienste

  • SharePoint-REST-APIs

  • Excel Services

  • Windows Identity Foundation (WIF) und anspruchsbasierte Identität

Was ich damit sagen will, ist, dass ich selbst als erfahrener Entwickler noch eine enorme Lernkurve zu bewältigen hatte. Jede dieser Technologien bedarf eines eingehenden Studiums. Die Grundkonzepte sind einfach zu verstehen, aber es kann eine Weile dauern, bis man sich genügend Kenntnisse erarbeitet hat, um die praktische Anwendung wirklich zu beherrschen.

In diesem Artikel möchte ich meine Überlegungen zu verschiedenen Aspekten der SharePoint-Entwicklung weitergeben. Dabei setze ich Aspekte der SharePoint-Entwicklung in Bezug zu vorher gemachten Erfahrungen. Was war ähnlich mit früheren Entwicklungsumgebungen, in denen ich gearbeitet habe? Worin bestanden Unterschiede? Ich schildere auch, wie ich über SharePoint-Entwicklung denke. Was umfasst eine SharePoint-Anwendung? Welche Optionen habe ich zur Erstellung einer solchen Anwendung? Wie sieht der Gesamtaufbau aus, und an welcher Stelle muss ich einsteigen, wenn ich ein bestimmtes Szenario implementieren möchte? Ich möchte hier die wesentlichen Aspekte herausarbeiten, mit denen Sie vertraut sein müssen, um bei der SharePoint-Entwicklung effektiv arbeiten zu können.

Grundlegendes zu SharePoint-Anwendungen

Zusammenfassend lässt sich sagen, SharePoint Server ist ein System, das folgende Leistungsbereiche bietet:

  • Websites. Websites sowohl innerhalb als auch außerhalb der Firewall.

  • Communitys. Zusammenarbeit über Wikis, Blogs usw.

  • **Content.**Enterprise Content Management, Web Content Management und Veröffentlichungssysteme.

  • Suche. SharePoint-Produkte und -Technologien enthalten ein Suchmodul, das Sie an Ihre individuellen Anforderungen anpassen können.

  • Insights (Wissen, Erkenntnisse). Business Intelligence.

  • Composites (Verbundanwendungen). Umfassen Datenzugriff, Benutzeroberflächen, Prozesse und Infrastruktur.

SharePoint-Produkte und -Technologien bieten eine skalierbare Architektur, die sich gleichermaßen für eine kleine Zahl von Benutzern wie für 100.000 Mitarbeiter eines Weltkonzerns eignet. Für Websites außerhalb einer Firewall können Sie mit SharePoint Server 2010 for Internet Sites skalierbare, flexible Websites erstellen, die Sie genauso einfach warten können wie eine SharePoint-Website.

In den meisten Fällen fügen Sie beim Erstellen einer SharePoint-Anwendung den Kernfunktionen zusätzliche Leistungsbereiche hinzu. Vielleicht möchten Sie die Benutzeroberfläche für einige wichtige Benutzer optimieren. Oder Sie möchten in mehreren Webparts einige spezifische Funktionen für einen bestimmten vertikalen Markt bereitstellen, z. B. für die Baubranche, das Rechtswesen oder die Fertigungsindustrie.

In manchen Fällen erstellen Sie vielleicht eine eigenständige Anwendung, die die SharePoint-Leistungsbereiche programmgesteuert verwendet. Dann sieht der Benutzer die SharePoint-Benutzeroberfläche möglicherweise garnicht, oder er bemerkt nicht, dass die Anwendung mit SharePoint als Teil ihrer Infrastruktur erstellt wurde.

Die Anpassung kann oberflächlich oder tief gehend sein. Die gesamte Anpassung kann aus einem einzigen Webpart bestehen, das ein bestimmtes Szenario in Ihrer Gruppe oder Ihrem Team unterstützt. Oder Sie erstellen eine komplexe kommerzielle Anwendung mit Datenfluss und Prozessen. Möglicherweise ist die Anwendung mit externen Customer-Relationship-Management- (CRM)- oder Enterprise-Resource-Planning- (ERP)-Systemen integriert.

Die Integration von SharePoint in das Microsoft Office 2010-System ist wichtig. Diese Integration können Sie nutzen, indem Sie Lösungen so erstellen, dass die Features Ihrer Anwendung für die Benutzer erkennbar und einfach zu verwenden sind, unabhängig davon, ob die Benutzer in einer Office-Clientanwendung oder in einem Webbrowser arbeiten. Auf die Schnittpunkte der SharePoint-Entwicklung mit der Office 2010-Cliententwicklung weise ich im gesamten Artikel an entsprechender Stelle hin.

Vergleich und Gegenüberstellung der SharePoint-Entwicklung mit anderen Formen der Entwicklung

Es ist hilfreich, die SharePoint-Entwicklung aus drei verschiedenen Blickwinkeln zu betrachten:

  • Erstellen von skalierbaren Anwendungen für das .NET Framework

  • Erstellen von Datenbankanwendungen

  • Erstellen von traditionellen Rich-Client-Anwendungen

Vergleich zwischen SharePoint-Anwendungen und skalierbaren .NET-Webanwendungen

Sie können die SharePoint-Entwicklung aus der Perspektive eines Entwicklers betrachten, der umfassend skalierbare, locker gekoppelte Webanwendungen erstellt, die in großen Serverfarmen ausgeführt werden. In diesen Anwendungen müssen Hunderte oder Tausende von Seitenaufrufen pro Minute verarbeitet werden.

SharePoint basiert im Kern auf ASP.NET, wird mit Internetinformationsdienste (IIS) ausgeführt und kann mehrere Front-End-Webserver verwenden, die den Lastenausgleich durchführen. SQL Server stellt die Integrität, Skalierbarkeit, Robustheit und Sicherheit der Daten und Dokumente sicher, die Sie in SharePoint-Websites speichern. Die Skalierbarkeit wirkt sich auf folgende Weise auf die SharePoint-Entwicklung aus.

  • API-Design. Die Skalierbarkeit steuert bestimmte Charakteristika der Programmierschnittstellen von SharePoint. Es ist einfacher, diese Programmierschnittstellen zu verstehen, wenn Sie wissen, dass deren Design die Skalierbarkeit erleichtert. Beispielsweise ist das Verwaltetes Clientobjektmodell, obwohl es dem serverseitigen Objektmodell von SharePoint Foundation hinsichtlich Abstraktionen sehr ähnelt, komplexer als dieses, weil Sie damit explizit steuern können, wann Daten oder Inhalte vom Server abgerufen werden.

  • Lösungsdesign. Die Skalierbarkeit bedingt, wie Sie eine auf SharePoint aufbauende Lösung entwerfen. Sie müssen Designs vermeiden, durch die unnötige Berechnungs- oder Abfrageaktivitäten auf dem Server verursacht werden. Außerdem müssen Sie Anwendungen schreiben, die nicht mehr Ressourcen verwenden, als vorgesehen. Das bedeutet z. B., dass Sie CAML-Hauptschemas (Collaborative Application Markup Language) und LINQ to SharePoint zweckmäßig einsetzen müssen, um Abfragen nach Listenelementen auszuführen.

  • Bewährte Methoden. Skalierbarkeit ist die Grundlage für bestimmte Programmieransätze und -zusammenhänge, die als bewährte Methoden der SharePoint-Entwicklung gelten. So sind beispielsweise bestimmten Objekten im SharePoint-Objektmodell nicht verwaltete Daten zugeordnet. Daher ist es notwendig, dass Sie die Regeln zum Verwerfen von Objekten verstehen und einhalten. Entsprechend sind einige bewährte Methoden zu berücksichtigen, wenn Sie in SharePoint mit umfangreichen Listen arbeiten. Wenn Sie diese Regeln nicht einhalten, hat dies nachteilige Wirkungen auf die Serverfarm. Weitere Informationen finden Sie unter Bewährte Methoden für SharePoint Foundation und Bewährte Methoden für SharePoint Server. Siehe auch Best Practices: Using Disposable Windows SharePoint Services Objects und Verwerfen von Objekten. Codeprüfungen können Sie mit einem automatisierten Tool verbessern. Informationen hierzu finden Sie unter Automate SharePoint Dispose() code reviews with SPDisposeCheck.

Diese Probleme sind identisch mit oder ähnlich denen, die Entwickler von hoch skalierbaren Webanwendungen zu bewältigen haben. Ich habe einmal von einem SharePoint-Entwickler gehört, der Code zum Durchlaufen aller Dokumente in seinen Websitesammlungen in festgelegten Intervallen und zum Sammeln von Informationen zwecks Darstellung in einem Struktursteuerelement geschrieben hat. Das hat in seiner Testumgebung sehr gut funktioniert. Allerdings ergab sich aus dem Codedesign ein Leistungsproblem bei der Verarbeitung der echten Mengen von Dokumenten und Listenelementen in der Praxis.

Die Skalierbarkeit wirkt sich in zweifacher Hinsicht auf das Lösungsdesign aus:

  • Sie müssen Anwendungen erstellen, die verteilbar sind und ordnungsgemäß funktionieren, wenn sie auf mehreren Front-End-Webservern bereitgestellt werden. Beispielsweise könnten Sie einen kleinen CRUD-Webdienst (Create, Read, Update, Delete) für Microsoft Business Connectivity Services (BCS) erstellen (siehe Business-Konnektivitätsdienste (Business Connectivity Services)), der Daten in einer lokalen XML-Datei speichert. Das funktioniert jedoch nicht, wenn der Webdienst in einer Serverfarm mit Lastenausgleich bereitgestellt wird.

  • Sie müssen Anwendungen erstellen, die eine gute Leistung bringen. Ein Beispiel: Wenn Sie nicht sicher sind, dass eine Liste nur wenige Listenelemente enthalten wird, durchlaufen Sie diese nicht mithilfe des Objektmodells; verwenden Sie stattdessen LINQ to SharePoint, und überlassen Sie SharePoint die Optimierung.

Weitere Informationen zu den Ähnlichkeiten und Unterschieden zwischen der Entwicklung für SharePoint und der ASP.NET-Entwicklung finden Sie unter Gleitpfad für ASP.NET-Entwickler. Siehe auch SharePoint 2010-Entwicklung für ASP.NET-Entwickler.

Bewährte Methoden für SharePoint Foundation enthält wertvolle Hinweise zur Umgehung der typischen Fallen, durch die die Leistung beeinträchtigt werden kann. Hier finden Sie Anleitungen zum Verwerfen von Objekten, zu Ereignisempfängern, großen Ordnern und Listen und zur Optimierung der Codeleistung.

Vergleich zwischen SharePoint-Anwendungen und Datenbankanwendungen

Auch aus der Perspektive der Datenbankanwendungsentwicklung lässt sich einiges über SharePoint-Entwicklung sagen. Benutzerdefinierte Listen in einer SharePoint-Website haben mit Datenbanktabellen vieles gemein. Sie können Spalten in Listen definieren, die mit einer Fülle von Metadaten ausgestattet sind. Außerdem können Sie für SharePoint-Listen Fremdschlüssel definieren, um interessantere Szenarien zu modellieren. SharePoint bietet die Möglichkeit, Weitergabe- oder Einschränkungsverhalten für Löschvorgänge festzulegen. Sie können diese Listen programmgesteuert oder deklarativ erstellen, oder Sie schreiben Programme, die von Benutzern definierte Listen verwenden. Diese Listen können sichtbar oder verborgen sein. Zum Einschränken des Zugriffs können Sie die Sicherheitsfeatures von SharePoint verwenden.

Eine direkte Parallele von SharePoint zu SQL-Datenbanken ist, dass Sie eine nicht prozedurale, deklarative Abfragesprache verwenden, um Daten abzurufen. Allerdings verwenden Sie anstelle von SQL LINQ to SharePoint oder Collaborative Application Markup Language (CAML). Dieser Code wir mithilfe von XML geschrieben.

SharePoint ist tief in die Datenbanktechnologie integriert. Sie können Business-Konnektivitätsdienste (Business Connectivity Services) verwenden, um Datenbanken, Webdienste und fast alle Arten von Datenquellen zu nutzen. Diese Datenquellen werden als externe Inhaltstypen dargestellt.

Ein interessantes Charakteristikum der datenbezogenen Leistungsbereiche von SharePoint ist, dass es keine Garantien für Transaktionen gibt. Ein Beispiel: Wenn Sie ein Listenelement in eine Tabelle einfügen und ein Listenelement in einer anderen Tabelle aktualisieren, ist es nicht garantiert, dass keine dieser Aktionen oder beide stattfinden. SharePoint ist nicht für die Nutzung als Plattform zur Implementierung von auf Transaktionen basierenden Systemen gedacht. Vielmehr sollten solche transaktionalen Systeme in externen Datenbanken implementiert werden, die die entsprechenden Garantien bieten. Dann können Sie diese Daten mithilfe von Business-Konnektivitätsdienste (Business Connectivity Services) in SharePoint darstellen. Beim Entwerfen von SharePoint-Anwendungen müssen Sie diese Besonderheit berücksichtigen.

Ein wichtiger Unterschied zwischen den datenbezogenen Leistungsbereichen von SharePoint und traditioneller Datenbankentwicklung besteht darin, dass SharePoint-Listen (vergleichbar mit Datenbanktabellen) nicht unbedingt rechtwinklig sind. In SharePoint werden die Felder, aus denen sich ein Listenelement (vergleichbar mit einer Zeile) in einer Liste zusammensetzt, durch einen Inhaltstyp definiert. Dies können Sie sich als das Schema für ein Listenelement vorstellen. Eine SharePoint-Liste kann Listenelemente mehrerer unterschiedlicher Inhaltstypen enthalten. Die folgende Abbildung zeigt eine SharePoint-Liste, die Elemente mit zwei Inhaltstypen enthält: LABOR und MATERIAL.

Abbildung 2. Nicht rechtwinklige SharePoint-Liste

Nicht rechteckige SharePoint-Liste

Dies hat einen Einfluss darauf, wie Sie Anwendungen entwerfen und entwickeln, die Listenelemente und die Felder in Listenelementen nutzen. Wenn Sie rechtwinklige Daten brauchen, können Sie Listen so definieren, dass sie nur einen einzigen Inhaltstyp enthalten können. Wenn Sie nicht rechtwinklige Daten zulassen, müssen Sie beim Durchlaufen der Listenelemente den Inhaltstyp überprüfen und das Verhalten des Codes entsprechend verändern.

Eine weitere Besonderheit ist, dass aufgrund interner Implementierungsdetails das Ausführen von Abfragen in SharePoint mithilfe von LINQ to SharePoint oder CAML wesentlich langsamer ist als das Abfragen von Tabellen mithilfe von SQL. Es ist unerwünscht, dass ein Design entsteht, in dem manche Listen unbeabsichtigterweise auf 50.000 oder 100.000 Elemente anwachsen, und der Benutzer kann jederzeit versuchen, eine solche Liste in einem Browserfenster aufzurufen. SharePoint 2010 enthält Einschränkungsfeatures, die verhindern, dass solche Designs die Serverfarm in die Knie zwingen. Allerdings reagiert dann die Benutzeroberfläche nicht mehr auf Eingaben des Benutzers. SharePoint bietet Möglichkeiten zur Verarbeitung solcher Listen mit einer großen Anzahl von Elementen, diese Möglichkeiten müssen Sie aber bewusst nutzen. Weitere Informationen finden Sie unter Arbeiten mit umfangreichen Ordnern und Listen.

SharePoint baut auf SQL Server auf. Dokumentbibliotheken und SharePoint-Listen werden in einer Datenbank gespeichert. Das sehen Sie z. B. Architekturdiagrammen von SharePoint-Installationen. Die eigentliche SharePoint-Datenbank ist für Sie als SharePoint-Entwickler nicht besonders relevant. Sie greifen niemals direkt auf diese Datenbank zu. Sie verwenden immer die Programmierschnittstellen, um Websites, Listen und Dokumentbibliotheken zu ändern. Allerdings können Sie genau diese SQL Server-Installation zum Hosten von Datenbanken verwenden, die direkt oder über Business-Konnektivitätsdienste (Business Connectivity Services) genutzt werden. Somit kann sie ein Teil der Infrastruktur sein, die Sie zum Erstellen von SharePoint-Anwendungen verwenden.

Mit Microsoft Access-Diensten können Sie (mit gewissen Beschränkungen) Access-Datenbanken auf SharePoint-Websites veröffentlichen. Das eröffnet Ihnen interessante Möglichkeiten, da SharePoint-Benutzer hierdurch Daten bequem und in einem vertrauten Format austauschen können.

Clientseitige Datenzugriffstechnologien

Sie können programmgesteuert von Clientcomputern auf SharePoint-Daten zugreifen. Beim Datenzugriff von Clientcomputern aus werden in SharePoint Netzwerktechnologien zum Senden der Anforderung an SharePoint Foundation oder SharePoint Server und zum Abrufen der Ergebnisse der Anforderung aus SharePoint verwendet.

Clientseitige Datenzugriffstechnologien

Datenzugriffstechnologie

Beschreibung

Clientseitige API der Business-Konnektivitätsdienste

Ermöglicht Online- und Offlinezugriff auf Daten in externen Inhaltstypen. Auf dieses Objektmodell können Sie von verwalteten Add-Ins für Microsoft Word, Microsoft Excel oder Microsoft PowerPoint zugreifen. Dies ist in manchen Fällen die effizienteste und komfortabelste Möglichkeit, auf Daten zuzugreifen, die sich außerhalb von SharePoint befinden.

Webdienste

Ermöglicht hoch leistungsfähige Designs zum Hosten von benutzerdefinierten WCF-Diensten in SharePoint Server. Der WCF-Dienst kann über das Serverobjektmodell auf Daten und Dokumente zugreifen und es dem Client ermöglichen, über den von Ihnen implementierten Dienst auf die Daten und Dokumente zuzugreifen.

Excel Services-ECMAScript-Schnittstelle

Ermöglicht das Anpassen, Automatisieren und Steuern des Excel Web Access-Webpartsteuerelements auf einer Seite.

Excel Services-REST-API

Ermöglicht den Zugriff auf Arbeitsmappenteile oder -elemente direkt über eine URL.

Excel Web Services

Ermöglicht, dass Anwendungen Werte in Arbeitsmappen berechnen, festlegen und aus diesen extrahieren sowie externe Datenverbindungen aktualisieren können.

ECMAScript-Clientobjektmodell

Ermöglicht ECMAScript-Programmen den Zugriff auf SharePoint-Daten. Diese Programmierschnittstelle ist eine Variante des Verwaltetes Clientobjektmodell.

Verwaltetes Clientobjektmodell

Ermöglicht .NET Framework-Anwendungen (z. B. eigenständigen Anwendungen, Silverlight-Anwendungen und ASP.NET-Anwendungen) den Zugriff auf SharePoint-Daten. Dieses Framework ähnelt dem Serverobjektmodell, bietet jedoch zusätzliche Semantik zum Steuern des Netzwerkverkehrs zum und vom Server. Bei der Verwendung des Clientobjektmodells ist es wichtig, CAML zu kennen und effektiv einzusetzen.

OData-REST-APIs

Stellt eine REST-Programmierschnittstelle für Listen und Listenelemente bereit.

SharePoint-Webdienste

Bietet Webdienstmethoden, die Sie einsetzen können, um remote mit SharePoint Foundation-Bereitstellungen zu arbeiten.

WebDAV (Web-Based Distributed Authoring and Versioning)

Ein Satz von Methoden, Headern und Inhaltstypen, die HTTP/1.1 ergänzen, sodass Ressourcenauflistungen erstellt und verwaltet werden können. Dank der SharePoint-Unterstützung für WebDAV können Sie Dokumente hoch- und herunterladen. WebDAV (RFC 4918) ist ein Arbeitsdokument der Internet Engineering Task Force (IETF).

Serverseitige Datenzugriffstechnologien

Beim Schreiben von Code, der direkt auf dem Server ausgeführt wird, können Sie – unabhängig davon, ob Sie eine Lösung mit eingeschränkter Sicherheitsstufe oder eine Server-Farmlösung erstellen – die Datenabfragen entweder in CAML oder mithilfe von LINQ to SharePoint angeben. CAML gibt schwach typisierte SPListItem-Objekte zurück, während LINQ to SharePoint stark typisierte Objekte zurückgibt, die in generiertem Code definiert werden.

Serverseitige Datenzugriffstechnologien

Datenzugriffstechnologie

Beschreibung

Collaborative Application Markup Language (CAML)

XML-basierte nicht prozedurale Abfragesprache

LINQ to SharePoint

Language-Integrated Query

Sie können nicht nur CAML oder LINQ to SharePoint verwenden, um eine Abfrage nach einem Satz von Elementen auszuführen, sondern Sie können die Elemente in einer Liste oder Bibliothek mithilfe des Serverobjektmodells auch direkt durchlaufen. Dies sollten Sie jedoch nur tun, wenn alle Elemente in der Liste verarbeitet werden müssen und Sie wissen, wie viele Elemente die Liste enthält. Ich entwerfe Anwendungen oft als datengesteuerte Anwendungen. Dabei entwerfe ich eine Liste so, dass sie einige Daten enthält, die das Verhalten steuern. Ich entwerfe das Design vielleicht so, dass ich immer weiß, dass eine bestimmte Anzahl von Datensätzen vorhanden ist, und dass alle Datensätze verarbeitet werden müssen, um das Anwendungsverhalten zu steuern. In diesem Fall verwende ich CAML oder LINQ to SharePoint, um die Elemente direkt ohne Abfrage zu durchlaufen. Beachten Sie, dass diese Vorgehensweise mit dem verwalteten Clientobjektmodell nicht funktioniert. Wenn Sie das verwaltete Clientobjektmodell verwenden, müssen Sie beim Abrufen von Auflistungen von Listenelementen CAML-Abfragen bereitstellen.

Vergleich zwischen SharePoint-Anwendungen und traditionellen Rich-Client-Anwendungen

SharePoint hat vieles mit einem Betriebssystem gemeinsam:

  • SharePoint bietet Speicherfunktionen. Dokumentbibliotheken, die Ordnerhierarchien enthalten, sind Dateien in den Verzeichnissen in einem Dateisystem sehr ähnlich.

  • SharePoint hat eine programmierbare Benutzeroberfläche.

  • Wie bei einem Betriebssystem können Sie Code schreiben, der auf verschiedenen Berechtigungsstufen ausgeführt wird. Mithilfe der SharePoint-Entwicklung können Sie Code schreiben, dessen Ausführung die Anmeldeinformationen eines Farmadministrators erfordert. Sie können Code schreiben, der in einer Lösung mit eingeschränkter Sicherheitsstufe ausgeführt wird, und Sie können JavaScript-Code schreiben, der im Clientbrowser ausgeführt wird.

  • Wie bei einem Betriebssystem können Sie Dienste programmieren, die die notwendige Infrastruktur zum Erstellen von SharePoint-Anwendungen mit komplexer Dynamik bereitstellen.

Der Hauptunterschied liegt abermals in der Größenordnung. Diese bestimmt die Programmierbarkeitsmerkmale von SharePoint. Sie können Software schreiben, die auf Hunderten von Servern mit hoher Leistung ausgeführt wird und dabei einem ganzen Unternehmen eine konsistente Benutzeroberfläche bietet, die die Zusammenarbeit intensiviert und die Produktivität steigert. Die Notwendigkeit, Skalierbarkeitsprobleme zu bewältigen, ist sozusagen der Preis für den Umstieg von der traditionellen Anwendungsentwicklung auf die SharePoint-Entwicklung.

Sprachen und Plattformen

Eine Frage, die alle neuen SharePoint-Entwickler besonders beschäftigt ist: Wie viel muss ich lernen? Die Liste der Sprachen und Plattformen, die Sie zum Entwickeln in SharePoint kennen müssen, ist lang. Der erste Punkt in der folgenden Liste ist der wichtigste. Was Sie darüber hinaus beherrschen müssen, hängt davon ab, welche Art von Anwendungen Sie entwickeln. Es ist nicht notwendig, jede Technologie in der folgenden Liste zu meistern. Lernen Sie zuerst das, was für Ihre gegenwärtige Aufgabe relevant ist.

  • Microsoft Visual C#, Microsoft Visual Basic und Microsoft .NET Framework. Sie verwenden das .NET Framework in der einen oder anderen Form, wenn Sie voll vertrauenswürdige Anwendungen für die Serverfarm, Sandkastenlösungen auf Websitesammlungsebene oder Microsoft Silverlight-Anwendungen erstellen. Wenn Sie mit den verschiedenen LINQ-Technologien vertraut sind – LINQ to XML, LINQ to Entities, LINQ to SharePoint und LINQ to SQL –, können Sie noch effektiver programmieren.

  • ASP.NET. SharePoint baut auf ASP.NET auf und wird in Internetinformationsdienste (IIS) gehostet. In SharePoint werden Gestaltungsvorlagen und Anwendungsseiten verwendet, mithilfe derer Sie das Erscheinungsbild und Verhalten der Seiten standardisieren können. Außerdem werden Webpartseiten und Webparts verwendet, über die die Benutzer eigene Seiten konfigurieren können. Sie können Webparts miteinander verbinden, sodass Sie Funktionen für die Bearbeitung von übergeordneten/untergeordneten Daten oder Web-Mashup-Anwendungen erstellen können.

  • HTML/CSS. In bestimmten Bereichen in der SharePoint-Entwicklung ist es hilfreich, HTML und CSS zu kennen und zu schreiben.

  • **ECMAScript und das HTML-Dokumentobjektmodell (Document Object Model, DOM).**JavaScript ist ein leistungsstarkes Tool in Ihrem Werkzeugkasten. Sie können das JavaScript-Clientobjektmodell oder die OData-REST-API aus JavaScript verwenden, um Daten und Dokumente aus Websites abzurufen. Mit JQuery und AJAX können Sie leistungsstarke Funktionen für Interaktivität hinzufügen.

  • **Silverlight/XAML.**Silverlight ist eine Entwicklungsplattform zum Erstellen von attraktiven interaktiven Anwendungen für viele Bildschirme im Web, auf Desktops und auf mobilen Geräten. Sie können das verwaltete Clientobjektmodell im Silverlight-Code verwenden, um Websitedaten und -dokumente zu lesen und zu schreiben. Microsoft Expression Blend ist ein effektives Tool zum Entwerfen von Silverlight-Webparts für SharePoint.

  • XML. Mit dem Codieren von funktionsfähigen XML-Dokumenten müssen Sie vertraut sein. In Bezug auf die Entwicklung mit XML empfehle ich Ihnen, LINQ to XML zu lernen und zu beherrschen. Das ermöglicht Ihnen ein effektiveres Arbeiten mit XML. Kenntnisse in XSLT können ebenfalls nützlich sein. Sie können benutzerdefinierte XSLT-Listenansichten manuell schreiben. Allerdings liegt der Hauptzweck von XSLT-Listenansichten darin, dass Sie damit über Microsoft SharePoint Designer interessante Formatierungen auf Listen anwenden können. Anders gesagt, ist XSLT eher das Ergebnis des Einsatzes von Tools als ein häufig verwendetes Entwicklertool.

Kernbegriffe bei der SharePoint-Anwendungsentwicklung

Im Folgenden definiere ich vier Kernbegriffe (wie sie z. B. auf den Websites mit den SharePoint-Produktinformationen verwendet werden), um die SharePoint-Anwendungsentwicklung in dieser Artikelreihe besser erklären zu können.

SharePoint-Anwendung. Umfasst Anpassungen, die als Ganzes bestimmte Markt- oder Kundenanforderungen erfüllen. Eine Anwendung besteht aus einer Kombination aus benutzerdefinierten Webparts, Workflows, Ereignishandlern, Inhaltstypen, vordefinierten Listen oder beliebigen anderen Technologien, mit denen sich SharePoint-Funktionen erweitern lassen.

SharePoint-Leistungsvermögen. Kernbereiche der Funktionen von SharePoint. Ausgehend von diesen stellen Entwickler Lösungen zusammen, die als Ganzes mehr können als die Summe ihrer Einzelteile. Zu diesen Leistungsbereichen gehören folgende:

SharePoint-Entwicklerszenarien. Aktivitäten, die ein Entwickler SharePoint-Benutzern ermöglichen möchte. Beispielsweise können Sie es dem Benutzer ermöglichen, mehrere Hundert Word-Dokumente auf der Basis von Daten zu erstellen, die in einer SharePoint-Liste gespeichert sind, PDF- oder XPS-Dateien aus diesen Dokumenten zu generieren und diese zu drucken oder per E-Mail zu versenden. Zum Implementieren dieses Szenarios verwenden Sie mehrere Bausteine für Entwickler. Eine Möglichkeit der Implementierung besteht z. B. darin, das Open XML SDK 2.0 für Microsoft Office (siehe Willkommen beim Open XML SDK 2.0 für Microsoft Office) in einem Webpart zu verwenden, das als Lösung mit eingeschränkter Sicherheitsstufe implementiert ist, und es anschließend mithilfe von Word-Diensten von DOCX in PDF zu konvertieren.

SharePoint-Bausteine für Entwickler. Technologien in SharePoint, die Sie für die Entwicklung von Anwendungen verwenden, z. B. Webparts, Workflows, Ereignishandler, Daten und Dienste. Beim Entwickeln einer Anwendung setzen Sie die Bausteine so ein, dass alle Einzelteile reibungslos zusammen funktionieren.

Varianten von SharePoint-Anwendungen

Welche Anwendungsvarianten lassen sich mit SharePoint-Entwicklung erstellen? Genauso gut könnte man fragen, welche Arten von Anwendungen auf einem Betriebssystem erstellt werden können – SharePoint lässt sich für eine ungeheure Vielfalt von Einsatzmöglichkeiten nutzen. Im Folgenden seien einige davon genannt.

  • Vertikale Märkte. Anbieter passen SharePoint für ganz bestimmte Märkte an, z. B. Immobilienmanagement, Resort- und Entertainment-Management oder Ausrüstungsvermietung.

  • Angepasste Teamanwendungen. Manchmal brauchen Abteilungen von großen Organisationen angepasste Anwendungen, um bei der Erreichung ihrer Ziele strukturierter und transparenter arbeiten zu können. So könnte beispielsweise eine Testabteilung ein System zur Verwaltung einer Bibliothek von Testinstrumenten und -ressourcen erstellen.

  • Systeme zur Veröffentlichung von Inhalten (Content-Publishing-Systeme). Solche Systeme können von einer einfachen Website oder Websitesammlung, die von einem einzigen Autor verwaltet wird, bis hin zu komplexen Systemen zur Erstellung von technischen Dokumenten reichen, die von Hunderten von Autoren, Entwicklern und Managern genutzt werden, wie etwa die Website Office.com.

  • **Buchhaltungssysteme.**Microsoft rät zwar von der Implementierung von transaktionalen Systemen in SharePoint ab, doch ist das Einlesen von Daten aus externen Buchhaltungssystemen in SharePoint für die Benutzer von großem Vorteil.

  • Managementinformationssysteme. Für manche automatisierten Managementsystem gelten nicht die gleichen transaktionsbezogenen Anforderungen wie für Buchhaltungssysteme. Sie können mithilfe einer Standard-SharePoint-Installation Listen von Kunden, Produkten, Anlagen und Ressourcen verwalten. Wenn Sie diese programmgesteuert erweitern, können Sie den Benutzern eine sehr anspruchsvolle Anwendung bieten.

  • Vertrieb und Marketing. Marketing- und Vertriebssysteme ähneln in vielerlei Hinsicht Managementinformationssystemen. Durch Integration von SharePoint mit CRM-Systemen wie Microsoft Dynamics entstehen leistungsstarke hybride Anwendungen. Darüber hinaus können Mitarbeiter im Außendienst durch den mobilen Zugriff auf SharePoint-Websites die Tools nutzen, die sie für die Interaktion mit relevanten Daten brauchen.

  • Projektmanagement. Durch die Integration von Microsoft Project Server 2010 mit SharePoint Server Enterprise werden Funktionen für das Projekt- und Portfoliomanagement bereitgestellt, mit denen Organisationen Investitionen priorisieren, Ressourcen planen und Projekte durchführen können. Anwendungen für Project Server können Sie mithilfe der API von Project Server entwickeln.

Zwar lassen sich viele Beispiele für SharePoint-Anwendungen in eine dieser Kategorien einordnen, doch ist diese Liste definitiv unvollständig. Ich bin mir sicher, dass schon jemand ein Spiel programmiert hat, das unter SharePoint läuft und in dem die Features für Zusammenarbeit eingesetzt werden. Und bestimmt gibt es schon ein System, das automatisierte Fertigungssysteme mithilfe von SharePoint-Listen, -Ereignishandlern usw. steuert. Anbieter, die andere vertikale Märkte bedienen, beispielsweise CAD oder Architektur, werden eigene Verbesserungen für SharePoint schreiben.

Die Anwendungen, die Sie für SharePoint erstellen können, sind so vielfältig wie die Anwendungen, die Sie für das Betriebssystem Windows entwickeln können.

SharePoint-Leistungsvermögen

Ausführliche Informationen zu den SharePoint-Leistungsbereichen finden Sie auf der Website mit der Produktübersicht für Microsoft SharePoint 2010. Diese Leistungsbereiche umfassen Folgendes:

  • Websites. Sie können alle geschäftlichen Websites mithilfe von SharePoint 2010 entwickeln und verwalten. SharePoint 2010 bietet ein umfassendes Paket von Tools, mit denen Benutzer beliebige Arten von Websites erstellen können. SharePoint bietet die Infrastruktur, die die Verwaltung der Websites vereinfacht.

  • **Communitys.**SharePoint 2010 enthält Tools für die Zusammenarbeit, mit denen Benutzer Ideen austauschen und Menschen, Qualifikationen und Unternehmensinformationen finden können. Standardmäßig bietet SharePoint bereits viele Funktionen für die Zusammenarbeit, doch wenn Sie diese gezielt erweitern, können Sie dazu beitragen, dass die Zusammenarbeit nicht reaktiv, sondern proaktiv ist. Wenn Sie mithilfe von Microsoft Lync Server 2010 Anwesenheitsinformationen in SharePoint-Anwendungen integrieren, können Mitarbeiter leichter Kontakt zueinander aufnehmen.

  • Content. Organisationen, die Inhalte veröffentlichen, können unterschiedlichster Natur sein, von internationalen Presseorganisationen bis hin zu kleinen Abteilungen, die für die Veröffentlichung von Produktdokumentationen verantwortlich sind. Organisationen können SharePoint 2010 verwenden, um Inhalte zu verwalten, und mit Word 2010 Inhalte bearbeiten. Außerdem teile ich die inhaltsbezogenen Funktionen in die folgenden drei Unterkategorien auf:

    • Veröffentlichungssysteme. Sie können SharePoint Server 2010 verwenden, um ein umfassendes Veröffentlichungssystem zu verwalten. Das Endprodukt kann im PDF-, XPS- oder einem anderen Format veröffentlicht werden. Open XML ist eine besonders leistungsfähige Technologie zur Erstellung von Veröffentlichungssystemen. Möglicherweise müssen Sie komplexen Code für die Transformation in andere Formate schreiben. Informationen hierzu finden Sie beispielsweise im Blog Open XML to other forms such as XHtml.

    • Web Content Management. Ob Sie SharePoint Server 2010 for Internet Sites zum Erstellen von Websites für externe Benutzer verwenden oder mit SharePoint Wikis und Seiten innerhalb der Firewall erstellen – in SharePoint lassen sich anspruchsvolle Inhalte mit minimalem Aufwand erstellen.

    • Enterprise Content Management. Viele Organisationen verfügen über umfangreiches Organisationswissen, das häufig in Form von Dokumenten vorliegt, die anhand von Revisionen, Genehmigungsprozessen und Metadaten verwaltet werden.

  • Suche. Damit die Benutzer aus der Flut von Daten in Ihrer Organisation aussagekräftige Informationen gewinnen, kann es entscheidend sein, die Benutzeroberfläche für die Suche anzupassen. Mit SharePoint Server 2010 können Sie Anpassungen so implementieren, dass das SharePoint-Suchmodul ganz bestimmte Arten von Dokumenten durchsucht. Weitere Informationen hierzu finden Sie unter SharePoint-Unternehmenssuche. Außerdem können Sie die Suche so anpassen, dass externe Inhaltstypen durchsucht werden können.

  • Insights (Wissen, Erkenntnisse). In einer Umfrage wurden CEOs von sehr großen Unternehmen jüngst gefragt, welche Themen für sie gegenwärtig im Vordergrund stehen. Dabei wurde Business Intelligence (BI) am häufigsten als oberste Priorität genannt. Excel Services und die Möglichkeit der Entwicklung von Dashboards sind wichtig für die Erstellung von leistungsstarken, flexiblen BI-Systemen. PerformancePoint Services für SharePoint bietet eine weitere Option für die Entwicklung von anpassbaren BI-Dashboards.

  • Composites (Verbundanwendungen). Sie können innovative Lösungen entwickeln, die kundenspezifische Benutzeroberflächen, Datenzugriff, Geschäftslogik und Dienste vereinen. Dabei lassen sich Geschäftsprozesse mithilfe von Workflows dokumentieren und standardisieren.

SharePoint-Entwicklerszenarien

Viele Entwickler legen Entwicklerszenarien fest und dokumentieren sie, während sie die Software entwerfen, doch bevor sie die funktionalen Spezifikationen schreiben. Dieser Prozess kann beispielsweise die Erstellung von Storyboards, die veranschaulichen, wie ein Benutzer sich von Punkt A nach Punkt B bewegt, um eine bestimmte Aufgabe auszuführen. Manchmal werden auch formale Anwendungsfallanalysen durchgeführt. Und mithilfe von PowerPoint oder eines Modellierungstools können Sie ein Szenario sogar simulieren. In den meisten Entwicklungsorganisationen werden jedoch formale Spezifikationen geschrieben, in denen die Szenarien skizziert und erklärt werden.

Bei den möglichen Szenarien ist die Vielfalt sogar noch größer als bei den Anwendungsvarianten. Es gibt jedoch einige übergeordnete Typen von Szenarien.

  • Szenarien, mit denen bessere Benutzeroberflächen für vorhandene SharePoint-Daten bereitgestellt werden. Vielleicht sollen beispielsweise berechnete Werte dargestellt werden, die auf Daten in verschiedenen SharePoint-Listen basieren.

  • Szenarien, bei denen externe Daten aus externen Systemen eingelesen werden. Beispiele: Es soll eine Verbindung zu einem modernen ERP- oder CRM-System oder zu einer proprietären Datenbank hergestellt werden, die mithilfe eines Emulators für eine veraltete Hardwarearchitektur unter UNIX implementiert ist.

  • Szenarien für die Erstellung von Dokumenten. Beispielsweise können Sie Hunderte oder Tausende von Open XML-Dokumenten generieren, die auf Daten basieren, die in SharePoint-Listen oder externen Systemen gespeichert sind, und sie anschließend in PDF oder ein anderes Format konvertieren.

  • Szenarien für Prozesse und Prozeduren. Dies können einfache Szenarien sein, z. B. ein Dokumentgenehmigungsprozess, oder komplexe Szenarien wie etwa das Weiterführen einer Ausschreibung durch Generieren eines Vertragsunterzeichnungsangebots.

Jedes Entwicklerszenario implementieren Sie mithilfe eines oder mehrerer SharePoint-Bausteine für Entwickler. Natürlich müssen Sie als Systemdesigner eigene Szenarien definieren. Dann müssen Sie mit den verfügbaren Bausteinen vertraut sein, die Sie zur Implementierung Ihres Szenarios nutzen können. In vielen Fällen haben Sie mehrere Optionen, von denen jede ihre Besonderheiten hat. Für ein konkretes Szenario eignet sich dann eine Option vielleicht besser als eine andere. Die grobe Richtung für Ihr individuelles Szenario kennen Sie wahrscheinlich schon. Ein Entwickler einer High-End-Marketing- und Design-Website oder einer Website für Luxusgüter plant u. U. von Anfang an, wo immer möglich Silverlight einzusetzen, während ein Entwickler einer Teamwebsite, der auch für andere Aufgaben zuständig ist, alles nutzt, womit er die Website möglichst schnell und einfach fertig stellen kann.

Schlussbemerkung

In diesem Artikel habe ich die Ähnlichkeiten und Unterschiede zwischen der SharePoint-Entwicklung und anderen Formen der Anwendungsentwicklung beschrieben. Zu diesen gehören die Entwicklung von skalierbaren, locker gekoppelten ASP.NET-Anwendungen, die Entwicklung von Datenbankanwendungen und die Entwicklung von traditionellen Rich-Client-Anwendungen. Ich habe erklärt, welche Sprachen und Plattformen Sie kennen müssen, und einige Kernbegriffe für die SharePoint-Entwicklung erläutert. Außerdem habe ich die Leistungsbereiche von SharePoint beschrieben und erklärt, wie Entwickler diese Funktionen erweitern können, um die Anforderungen ihrer Benutzer zu erfüllen. Im nächsten Artikel, SharePoint 2010-Entwicklerbausteine: Technologien zum Erstellen von SharePoint-Anwendungen (Teil 2 von 2), erkläre ich alle technologischen Bausteine, die Sie zum Erstellen einer SharePoint-Anwendung nutzen.