SharePoint Server 2016 Reversed for Developers

TopChangesUnd noch immer kein SDK. Wie schade! Auch nach rund anderthalb Monaten findet man fast ausschließlich die bereits bekanntgegebenen Informationen, die eine Flut von fast immer gleichen Blog-Posts zum Thema nach sich zog. Selten machen sich die Autoren dabei die Mühe die 2016-Feature-Liste nicht nochmals 1:1 aufzuwärmen.
Viel interessanter wäre es doch zu sehen, was es alles Neues in der API gibt. Neue Methoden oder Eigenschaften auf den vertrauten Objekte wie SPList, SPWeb, SPFile und SPSite oder generell die Möglichkeiten per CSOM mit den neuen Compliance Features zu arbeiten. Selbst der reine Umfang an Änderungen bei den PowerShell Commandlets sollte interessante Rückschlüsse auf die strategische Ausrichtung von SharePoint aus dem Blickwinkel des Herstellers zulassen…

Glücklicherweise lassen sich die meisten Dinge mit Hilfe der verfügbaren Preview von SharePoint 2016 relativ einfach selbst recherchieren. Da ich mir den Spaß gegönnt habe, die Preview mit ihrer Vorgängerversion zu vergleichen, wollte ich es mir nicht nehmen lassen, einige der gewonnenen Erkenntnisse kurz niederzuschreiben.

PowerShell

Wohl am einfachsten ist es, sich die Verteilung der Commandlets hinsichtlich ihrer Aufgaben anzuschauen. Hierfür vergleiche ich lediglich die Anzahl aller SharePoint-Commandlets gruppiert nach Verb, was uns 17 Neuerungen bei den Get- und 16 bei den Set-Commandlets beschert. Rein prozentual sind die 4 neuen Reset-Commandlets noch zu erwähnen sowie auch die ganz neu eingeführten Migrate-Commandlets.

Changes_PowerShell

15-Hive vs. 16-Hive

Ähnlich simpel, jedoch noch wesentlich spannender wird es, wenn wir SharePoints 15-Hive dem 16-Hive gegenüberstellen. Nach einem Vergleich der Anzahl aller Files gruppiert nach Dateierweiterung ist schnell zu erkennen, wo sich wohl etwas getan haben muss.

compare_ISAPI-Folders

Die Webservices (.asmx- und .svc-Dateien) sind offenbar identisch von ihrer Anzahl her – die DLLs zeigen jedoch einen deutliche Unterschied. Schauen wir uns als die DLLs an. Aber nicht nur die Anzahl sondern auch die Größe der Dateien in der Gegenüberstellung beider ISAPI-Folder lässt Vermutungen zu, wo sich die scheinbar signifikantesten Änderungen verstecken.

Changes_LibrariesFür den Anfang gibt der Vergleich der beiden ISAPI-Folder Hinweise auf die Ausrichtung von künftigen SharePoint-Versionen sowie einen guten Einstieg, mit welchen Bibliotheken wir uns später ein wenig genauer befassen sollten. Das Augenscheinlichste jedoch zuerst – wer geht und wer kommt?

Vermutlich ausrangiert werden…

  • Microsoft.Office.Client.Education.dll
  • Microsoft.Office.Excel.Server.Udf.dll
  • Microsoft.Office.Excel.Server.WebServices.dll

Neu hinzu gesellen sich…

  • Die Portables, welche eine Art Repräsentation der vorhandenen Bibliotheken für den Einsatz auf leichtgewichtigeren Plattformen gedacht zu sein scheinen
    • Microsoft.Office.Client.Policy.Portable.dll
    • Microsoft.SharePoint.Client.DocumentManagement.Portable.dll
    • Microsoft.SharePoint.Client.Portable.dll
    • Microsoft.SharePoint.Client.Publishing.Portable.dll
    • Microsoft.SharePoint.Client.Runtime.Portable.dll
    • Microsoft.SharePoint.Client.Search.Applications.Portable.dll
    • Microsoft.SharePoint.Client.Search.Portable.dll
    • Microsoft.SharePoint.Client.UserProfiles.Portable.dll
    • Microsoft.SharePoint.Client.WorkflowServices.Portable.dll
  • Plattformspezifische Runtime-Versionen mit Store-Anbindung
    • Microsoft.SharePoint.Client.Runtime.Windows.dll
    • Microsoft.SharePoint.Client.Runtime.WindowsPhone.dll
    • Microsoft.SharePoint.Client.Runtime.WindowsStore.dll
  • Eine Project Server Bibliothek: Microsoft.ProjectServer.Client.dll
  • Eine wenig sagende Directory-Bibliothek: Microsoft.SharePoint.Client.Directory.dll

Noch ein wenig genauer hingeschaut

Wie schon angedeutet geben die Dateien mit dem größten Zuwachs ein gutes Ziel für einen direkten Vergleich der Code-Basis ab, um einen Eindruck zu gewinnen, was den SharePoint-Entwickler künftig erwarten wird.

Rein prozentual gegenüber den Dateien von SharePoint 2013 führen die Bibliotheken Microsoft.Office.Client.Policy.dll (259%), Microsoft.Office.Server.UserProfiles.dll (160%), Microsoft.SharePoint.Client.dll (138%) und Microsoft.Office.Policy.dll (136%) die Liste an – in absoluten Zahlen sind es Microsoft.SharePoint.dll (+4,08 MB), Microsoft.Office.Server.Search.dll (+3,10 MB), Microsoft.Office.Server.UserProfiles.dll (+1,74 MB) und Microsoft.SharePoint.Publishing.dll (+0,64 MB).

Microsoft.Office.Client.Policy.dll

Naheliegend, dass wir hier einen Großteil der Neuerungen rund um die neuen Compliance-Features von SharePoint finden. Microsoft hat hierfür den Namespace Microsoft.SharePoint.Client.CompliancePolicy mit Leben gefüllt, in der sich 15 Klassen und 6 Enums befinden.

compare_SP2013_OfficeClientPolicy compare_SP2016_OfficeClientPolicySpäter wird man vermutlich für Container(Website-Sammlungen, Websites und Listen/Bibliotheken) mit Hilfe von Associations und/oder Bindings vordefinierte Compliance-Richtlinien in Form von Rules und Definitions verknüpfen können. Hier ein wenig tiefer einzutauchen scheint auf jeden Fall vielversprechend für ein tieferes Verständnis des neu geschaffenen Konstruktes.

Microsoft.SharePoint.Client.dll

Der Namespace für alle, die viel mit dem CSOM arbeiten. In absoluten Zahlen nur noch auf Platz 9 der aktualisierten Libraries, relativ immerhin noch auf Platz 3. Die sehr zentrale Klasse ClientContext wächst wenig spektakulär von 281 auf 312 LOC und hat kaum mehr als eine neue öffentliche Eigenschaft namens RequestResources gleichen Typs, welcher ebenfalls als neue Klasse enthalten ist. Hier können wohl eine Liste und ein View per GUID referenziert werden sowie per bools auf die UserInformationList, auf WebProperties, Features oder Navigationsstruktur verweisen.
Dahingegen beispielsweise kommt die Klasse File von 821 vs. 1073 LOC und bringt einige neue Methoden mit.

compare_SP2013_Client_File.cs compare_SP2016_Client_File.cs

Hier ist unter anderem zu sehen, dass es offenbar nun Möglichkeiten zum asynchronen oder wenigstens partiellen Hochladen von Dateien zu geben scheint.

Microsoft.SharePoint.Client.Directory.dll

Eine der Neuen im Bunde… im Namespace Microsoft.SharePoint.Client.DirectoryInterface finden sich Klassen, die sich um das definieren oder gründen von Gruppen, das Beitreten zu Gruppen, das Verwalten von Gruppenmitgliedern sowie der Kommunikation zwischen Gruppenmitgliedern drehen. Noch habe ich im Frontend dazu nichts entdecken können…

Fazit

Rein auf Grund des Umfangs des Codes, allem voran der der Kernbibliothek Microsoft.SharePoint.dll, ist ein umfassender und flächendeckender Vergleich des Codes ein größeres Projekt oder bedarf eines Analysewerkzeugs. Definitiv lohnend ist ein gezielter Blick auf bestimmte Code-Fragmente, welche einen ganz brauchbaren Eindruck der Unterschiede zu vermitteln scheinen.

Insgesamt fügt sich alles eigentlich ganz gut zu dem, wie sich auch das Frontend gab: keine überwältigenden Neuigkeiten, hier und dort ein wenig am Schulterschluss zwischen Cloud und On-Premise gefeilt, Integration der neuen Kernfeatures sowie ein paar Altlasten entsorgt.

Erwähnenswert finde ich auch den Fakt, dass die Dokumentation des Codes, der hier von Version v15.0.4571 bzw. v15.0.4727 auf die unter die Lupe genommene Preview als Neuerung hervorgegangen ist, zumindest zum Teil bereits in der MSDN – geführt unter SharePoint 2013 aber „Last modified: October 05, 2015“ – zu finden ist. Das sogar mit gleichlautenden DLL-Referenzen, in welchen der Code nachweislich nicht enthalten war.

Über Thomas Roschinsky
Software Engineer | .NET | SharePoint | Dynamics CRM | BI | C# | C/C++

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: