BASTA! 2014 Countdown

SharePoint und die Allzweckwaffe AngularJS
Kommentare

Seit Einführung des App-Modells in SharePoint 2013 können umfangreiche Anwendungen auch mit HTML und JavaScript erstellt werden. Wie Bibliotheken wie AngularJS und Knockout die App-Entwicklung für SharePoint beeinflussen und was es sonst noch zu beachten gibt, erklärt Marc André Zhou auf der BASTA! 2014. Uns hat er bereits im Vorfeld einen ersten Einblick in das Themengebiet gegeben.

Windows Developer: Auf der BASTA! 2014 halten Sie eine Session zum Thema SharePoint-Anwendungen mit AngularJS und Knockout. Die Grundlage hierfür bildet ja das App-Modell aus SharePoint 2013 als Alternative zu den Farmlösungen. Welche Vorteile bietet dieses Modell?

Marc André Zhou: Isolation! Der wesentliche Vorteil des SharePoint-App-Modells gegenüber klassischen Farmlösungen ist die Prozessisolation. Wird eine SharePoint-Erweiterung als App realisiert, wird diese vollständig getrennt vom SharePoint-Prozess ausgeführt. Durch diese Isolation wird die Stabilität der SharePoint Farm verbessert. Farmlösungen, die mit im Prozessraum des SharePoint Server ausgeführt werden – konkret im Internet Information Server Prozess (w3wp.exe) – können die Verfügbarkeit der SharePoint Farm gefährden. Dies ist immer dann der Fall, wenn die Farmlösung Ausnahmen (Exceptions) nicht ordnungsgemäß abfängt und verarbeitet. Diese Ausnahmen können den gesamten w3wp.exe-Prozess zum Absturz bringen. Neben diesen harten Fehlern können Laufzeitbeeinträchtigungen durch eine unsaubere Speicherverwaltung innerhalb der Farmlösung erhebliche Probleme verursachen. Öffnet zum Beispiel eine solche Anwendung intern SPWeb-Objekte und gibt sie diese nicht korrekt wieder frei, verbleiben diese Objekte im Speicher und belegen dort unnötig Speicherplatz. Im Laufe der Zeit kann so der Speicher knapp werden, was sich zunächst negativ auf das Antwortzeitverhalten auswirkt und im schlimmsten Fall es zu einem Prozessabsturz führt.

SharePoint-Apps dagegen kommen mit dem SharePoint-Prozess nicht in direkten Kontakt. Verursacht eine SharePoint-App eine Ausnahme oder besitzt sie eine fehlerhafte Speicherverwaltung, ist davon nur die App selbst betroffen. Der erste Versuch einer Prozessisolation für eigene Erweiterungen war übrigens das SharePoint-Sandkastenmodell (Sandboxed Solutions). Hierbei wird serverseitig ein eigenständiger Prozess gestartet, in dem dann die Anwendung ausgeführt wird. Jedoch ist das Programmiermodell komplex und besitzt einige Beschränkungen, die nur umständlich über eigene Proxy-Klassen zu umgehen sind. Daher hat sich dieses Modell bei den Entwicklern nicht durchgesetzt.

SharePoint-App-Modell

Windows Developer: In diesem Zusammenhang muss auch das clientseitige Objektmodell erwähnt werden – worum handelt es sich dabei genau?

Marc André Zhou: Das clientseitige Objektmodell ermöglicht den Zugriff auf SharePoint von einer anderen Maschine aus bzw. einfach ausgedrückt erlaubt es einen einfachen „remote“-basierten API-Zugriff. Bis zur SharePoint-Version 2007 konnte zwar für den API-Zugriff das serverseitige Objektmodell verwendet werden, jedoch musste dabei die Anwendung stets auf dem SharePoint Server ausgeführt werden. Musste man dennoch von einer anderen Maschine auf SharePoint-Elemente wie z. B. Listendaten zugreifen, blieb nur der Weg über die SharePoint Web-Services. Hierüber können zwar schon Daten abgegriffen werden, jedoch stehen über diesen Weg nicht alle Funktionen des serverseitigen Objektmodells zur Verfügung. Das clientseitige Objektmodell stellt nun (fast) alle Funktionen des serverseitigen Objektmodells zur Verfügung. Mithilfe des CSOM kann so z. B. eine WPF-Anwendung realisiert werden, die auf einem Client ausgeführt wird und die Bearbeitung von SharePoint-Daten ermöglicht. Zu unterscheiden sind dabei die verschiedenen CSOM-Bibliotheken. Insgesamt stehen in SharePoint die drei folgenden Clientobjektmodelle für verwalteten Code zur Verfügung: .NET, Silverlight und Mobil. Je nach Anwendungstyp muss die passende Bibliothek verwendet werden, da diese auf die speziellen Plattformspezifika zugeschnitten sind. Kann keine von diesen Bibliotheken verwendet werden, da z. B. von einer Nicht-Microsoft-Plattform auf SharePoint zugegriffen werden soll, kann entweder die REST-basierte Schnittstelle oder JSOM (JavaScript-Objektmodell) eingesetzt werden. Speziell für die Entwicklung von SharePoint-betriebenen Apps (SharePoint-hosted Apps) ist die Verwendung von JSOM die erste Wahl.

BASTA! 2014

Jede Menge spannende Sessions rund um .NET, Windows und JavaScript gibt es auf der BASTA!, die vom 22. bis zum 26. September in der Mainzer Rheingoldhalle stattfindet und mit über 130 Sessions, Workshops und Keynotes aufwartet. Als Teilnehmer kann man zusätzlich auch die Sessions der gleichzeitig stattfindenden ALM today kostenlos besuchen.

Windows Developer: Erst durch das CSOM können SharePoint-Anwendungen in HTML5 und JavaScript realisiert werden. Wo liegen die Stärken dieser Apps verglichen mit klassischen Lösungen in C#?

Marc André Zhou: Das CSOM öffnet durch die clientseitige Verwendung das SharePoint-API auch für Nicht-SharePoint-Entwickler. Die Entwicklung von SharePoint-Artefakten wie Webparts, Workflows oder auch Ereignisempfängern war in früheren SharePoint-Versionen nicht gerade einfach. Um effektiv Anwendungen realisieren zu können, musste die Entwicklermaschine selbst einen SharePoint Server betreiben. Das JavaScript-Objektmodell (JSOM) stellt seit SharePoint 2010 ein umfassendes API für den Browser zur Verfügung. Mit JSOM und HTML/CSS ist es sehr einfach und effektiv möglich, umfangreiche SharePoint-Erweiterungen zu implementieren. Die Programmiersprache C# rückt dabei in den Hintergrund. Vielmehr ist nun jeder JavaScript-Entwickler in der Lage, auch SharePoint-basierte Anwendungen zu realisieren. Vor SharePoint 2010 konnten zwar schon ähnliche, also reine HTML- und JavaScript-basierte Anwendungen mit Hilfe der verfügbaren Web-Services realisiert werden, jedoch bietet erst JSOM eine einfache Programmierschnittstelle an. 

AngularJS als Allzweckwaffe

Windows Developer: Und welche Rolle spielen dabei die in Ihrer BASTA!-Session angesprochenen Bibliotheken AngularJS und Knockout?

Marc André Zhou: JSOM öffnet das API für JavaScript-Entwickler – mehr nicht! Da nun mehr Logik auf der Clientseite implementiert wird, sollte dies, wenn möglich, strukturiert erfolgen. Im Gegensatz zu anderen Programmiersprachen wie C# oder Java ist JavaScript aber etwas schwieriger zu strukturieren. Zudem kommt hinzu, dass viele Entwickler JavaScript als reine Skript-Sprache ansehen. Diese beiden Umstände wirken sich negativ auf den implementierten Code aus, der somit oft unübersichtlich wird und eher an die Struktur eines Skript-Programms erinnert. Auch JavaScript besitzt Konzepte wie Klassen und Vererbung, allerdings ist die Art und Weise der Verwendung sehr unterschiedlich im Vergleich zu anderen objektorientierten Programmiersprachen. Um nicht selbst in die Tiefen der nativen JavaScript-Programmierung absteigen zu müssen, stehen Frameworks und Bibliotheken wie AngularJS und Knockout zur Verfügung, die die strukturierte Umsetzung einer JavaScript- Anwendung ermöglichen. Der richtige Einsatz dieser Bibliotheken erleichtert die Umsetzung JavaScript-basierter Anwendung erheblich. Dank der sich daraus ergebenden Anwendungsarchitektur bleiben die Anwendungen darüber hinaus leicht erweiterbar und wartbar. Ebenfalls unterstützen einige Bibliotheken automatisierte Tests. Wie ich in meiner Session anhand einiger Beispiele zeigen werde, wird der Einsatz von jQuery überflüssig und die oft durchgeführten direkten DOM-Manipulationen entfallen vollständig.

Windows Developer: Könnte man diese Bibliotheken als Allzweckwaffe bezeichnen oder gibt es Fälle, in denen sie nicht ausreichen oder vielleicht auch ganz einfach nicht passen?

Marc André Zhou: Meiner Meinung nach ist AngularJS die absolute Allzweckwaffe. Auch wenn einige sagen, dass sich AngularJS nur für etwas größere Projekte eignet, würde ich die Bibliothek dennoch schon zu Beginn einsetzen. Denn in der Regel nimmt der Funktionsumfang einer Anwendung im Laufe der Zeit eher zu statt ab. Wenn jedoch nur eine kleine Anwendung umgesetzt werden soll, die lediglich temporär für einige Zeit aktiv ist, wie z. B. eine Umfrage oder die Online-Anmeldung zu einer Veranstaltung, reichen auch kleinere Bibliotheken wie Knockout in der Regel aus.

© Marc André Zhou

Marc André Zhou ist Dipl. Inf. (FH) und erwarb zusätzlich den Titel Master of Science. Er ist als freiberuflicher .NET- und SharePoint-Technologieberater tätig und berät und unterstützt unterschiedlichste Firmen bei der Verwendung aktueller .NET-Technologien. Im Bereich SharePoint ist er als MSCP, MCITP und MCTS zertifiziert. Seine Schwerpunkte liegen im Bereich Softwarearchitekturen (Web und Client/Server), SharePoint und Entwicklung von (Anwendungs-)Frameworks. Zusätzlich ist er als (Fachbuch-)Autor für verschiedene Verlage tätig. Er ist Autor der drei Bücher „Parallel Computing in .NET“ (2. Neuauflage Oktober 2011), „SharePoint Server 2010 – Das Entwicklerbuch“ und „Developing apps with Napa and Visual Studio 2012“.

Aufmacherbild: Stecken Sie Messer auf grünem Tarnunghintergrund von obenein von Shutterstock / Urheberrecht: Pablo Eder

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -