Dank Modularität zu mehr Produktivität
Quelle: Microsoft

Visual Studio 2017

Dank Modularität zu mehr Produktivität

Von Christoph Möhring

Microsoft hat im März 2017 eine neue Version seiner Entwicklersuite Visual Studio veröffentlicht. Im Vordergrund stehen die Verbesserung der Produktivität und die Anbindung an die Cloud.

Artikel erschienen in Swiss IT Magazine 2017/04

     

Microsoft hat am 7. März 2017 Visual Studio 2017 veröffentlicht und preist die Entwicklungsumgebung für alle Plattformen und Technologien unter dem Motto "Any Developer, Any App, Any Platform" an. Die implementierten Änderungen und Neuerungen sollen sich positiv auf die Produktivität auswirken. Visual Studio ist ausserdem neu auch unter MacOS (Visual Studio for Mac) verfügbar. Damit werden nun alle relevanten Plattformen unterstützt, nämlich Windows, MacOS, Linux, iOS, Android und Windows Mobile.

Die Oberfläche der Entwicklersuite hat sich nur im Detail geändert. Die darunterliegende Architektur ist jedoch komplett überarbeitet worden. Dies macht sich vor allem bei der Installation bemerkbar. Über eine Auswahl von 16 unterschiedlichen "Workloads" werden nur die Komponenten installiert, die für eine spezifische Art der Entwicklung benötigt werden. Xamarin ist neu Teil von Visual Studio und wird über den Workload Mobile Development with .NET installiert. Interessant ist die Möglichkeit, mit dem Xamarin Inspector zur Laufzeit das UI zu analysieren und anzupassen. Mit diesem Release kommen auch weitere Zielplattformen wie TvOS und Tizen for .NET hinzu. .NET Core wird nicht nur von Xamarin unterstützt. Mit dem zeitgleich veröffentlichten .NET Core Tooling können alle Anwendungstypen mit oder ohne Cloud-Unterstützung auch im Container entwickelt werden.


Die Zusammenarbeit mit der Cloud ist für den Entwickler transparent gestaltet. Dies betrifft die Microsoft-eigene Azure-­Einbindung sowie Cloud-Plattformen anderer Anbieter. Alles kann direkt und zentral gesteuert und verwaltet werden. Mit der Taste F5 wird die Debug Session gestartet, unabhängig davon, wo der Code ausgeführt wird. Diese Möglichkeiten sind nicht nur auf die Entwicklung beschränkt. Microsoft ermöglicht es, den kompletten DevOps-Prozess abzubilden. Von der Entwicklung bis hin zur Produktion in mehreren Stufen für alle gewünschten Umgebungen: Test, Integration und Produktion. Kurz vor Ende der Betaphase sind die Redgate Data Tools in die RTM-Version mit aufgenommen worden. Die interessanteste Funktion ist hierbei die automatische Erstellung von SQL Skripts. Im Skript sind die Änderungen zwischen den verschiedenen Datenbank-Versionen ersichtlich. Das erstellte Skript wird als Teil des Projekts behandelt und in die Versionskontrolle eingebunden. Leider sind die Tools bis auf die Redgate SQL Search nur in der Enterprise Version verfügbar. Die Familie von Visual Studio ist nochmals gewachsen – und zwar auf einen Umfang, der den Rahmen dieses Tests bei weitem sprengen würde. Der Test fokussiert sich daher im Nachfolgenden auf die spezifischen Neuerungen von Visual Studio 2017 in der Enterprise-Version.

Modularisierung

Mit Visual Studio 2017 hat Microsoft die Entwicklungsumgebung grundlegend modularisiert. Das Installationsprogram ist übersichtlich und in Bereiche gegliedert, die durch Kacheln mit dem Anwendungstyp dargestellt werden. Durch Auswahl einer oder mehrerer Kacheln werden nur die, für die benötigten Aufgaben notwendigen Komponenten installiert. Microsoft bezeichnet diese Aufteilung wie eingangs bereits beschrieben als "Workloads" (in der deutschen Version noch etwas unglücklich: "Arbeitsauslastungen"). Dadurch wurde der Installationsaufwand massiv verringert. Was früher durchaus mehrere Stunden dauern konnte, ist neu bereits in wenigen Minuten erledigt. Die Minimalinstallation hat eine Grösse von nur 753 MB und beinhaltet die Visual Studio Shell ohne besondere Funktionen. Eine typische Auswahl wie Webentwicklung oder .NET-Desktop­entwicklung ist zirka 3 bis 6 GB gross.


Der modulare Ansatz setzt sich auch nach der Installation fort. Wird ein Projekttyp oder Designer während der Arbeit oder von geladenen Projekten benötigt, kann die Erweiterung direkt instal­liert werden. Über das Installationsprogramm können weitere Workloads oder einzelne Komponenten nachträglich manuell hinzugefügt werden. Bei der Installation von neuen Projekttypen kann es sein, dass Visual Studio beendet werden muss, um die Installation fortsetzen zu können. Dies ist zum Beispiel bei der Erweiterung für Office/SharePoint aufgetreten. In Praxistests zeigt sich, dass solche Fehler davon abhängen können, welche Tools bereits installiert waren. Glücklicherweise sind solche Bugs aber die Ausnahme und dürften mit der Weiterenentwicklung der Workloads behoben werden.

Workloads

Mit den Workloads werden Komponenten für typische Aufgaben zusammengefasst. Es existieren 16 unterschiedliche Workloads, die nach Themen gegliedert sind, wie zum Beispiel Windows, Web und Cloud oder Mobile und Gaming.

Interessant ist, dass Microsoft neben den klassischen Desktop- und Web-Workloads auch Workloads für Node.js, Python und Unity anbietet. Die Vielfalt des Angebots zeigt, wie viele unterschiedliche Technologien und Frameworks unterstützt werden. Zum Teil überlappen oder konkurrieren diese, aber Visual Studio kann mit allen umgehen. Die Entscheidung, wie und was genutzt wird, liegt letztlich beim Entwickler, die Auswahl gestaltet sich jedoch nicht immer einfach.

.NET Core und .NET

Die Beantwortung der Frage, welches Framework oder welche Sprache eingesetzt werden soll, kann eine Herausforderung sein. Mit .NET, .NET Core und Xamarin werden gleich drei hauseigene Frameworks angeboten. Hinzu kommen die unterschiedlichen Javascript Frameworks oder Bibliotheken. Die Unterstützung ist für alle ungefähr gleichwertig. Für .NET Core v1.1.1 gibt es jetzt die .NET Core Tools. Interessanterweise wird ein neues Format für die Projektdatei (csproj) eingesetzt. Diese enthält nicht mehr die einzelnen Dateien, sondern nur noch die Verzeichnisse. Neue Dateien werden einfach durch Kopieren in das Verzeichnis hinzugefügt. Im täglichen Einsatz erhält man somit eine Flexibität, wie man sie von Visual Studio Code oder anderen Editoren gewohnt ist.


Bei den Sprachen wurden keine besonders nennenswerte Neuerungen implementiert. Vielmehr wurden etliche kleine Erweiterungen eingeführt, wie zum Beispiel die Option, Tupeln als Paremeter und Rückgabewert unter C# 7.0 und Visual Basic 14 einzusetzen. Für die tägliche Entwicklung werden die Erweiterungen keinen besonderen Mehrwert bringen. In Spezialfällen können sie aber eine spürbare Erleichterung bedeuten.

Mobile Entwicklung

Wie bei den Frameworks werden für die mobile Entwicklung unterschiedliche Ansätze angeboten. Neben der klassichen Entwicklung mit C++ können unter Javascript mit Apache Cordova oder unter Xamarin mobile Anwendungen entwickelt werden. Hierfür existieren eigene Workloads mit den zugehörigen Projektvorlagen.

Es ist spürbar, dass die Untersützung für Xamarin im Vordergrund steht. Während der Präsentation am Launch-Event wurden fast auschliesslich Xamarin und dessen Tools vorgestellt. Visual Studio 2017 hat Version 4.3 von Xamarin integriert. Die grössten Änderungen sind eine Vorschaufunktion für die XAML-basierten Xamarin Forms und eine Analyse- und Editierfunktion des XAML Code durch den Xamarin Inspector. Dieser Inspector ermöglicht es, sich während der Laufzeit mit der im Emulator ausgeführten App zu verbinden und die Oberfläche in den einzelnen Ebenen zu betrachen. Dabei können Anpassungen im Design vorgenommen werden, die wiederum zu einer Anpassung im Code führen. Dies ist eine sehr beeindruckende Funktion, die besonders bei der Vielfalt der mobilen Betriebssystemversionen viel Zeit einspart.

Javascript

Die Entwicklung mit Javascript wird nicht nur bei der mobilen Entwicklung unterstützt. Vielmehr ist Javascript in fast allen Bereichen vertreten. Deswegen bietet Visual Studio in allen Javascript-Projekten einen neuen Language Service an. Dieser ist schnell und bietet eine erweiterte Intellisense-Unterstützung für Sprachfeatures aus JSDoc, ES2016 und JSX Syntax an. Der Performance-Gewinn macht sich insbesondere bei grösseren Projekten mit vielen Dateien bemerkbar. Die Vorschläge erscheinen praktisch unmittelbar und unterstützen den Entwickler.

Cloud

Egal wo der Javascript Code letztendlich ausgeführt wird, Visual Studio bietet eine Unterstützung zum Debuggen oder Deployen. Am umfangreichsten ist diese bei der hauseigenen Azure-Plattform gegeben, aber auch die Cloud-Dienste von Google und Amazon werden unterstützt, sowohl von Microsoft wie auch von den Cloud-Anbietern. Über die mitgelieferten Projektvor­lagen werden alle Daten für den Cloud-Dienst gesammelt und in einem vorgefertigten Projekt mit Deployment erstellt. Die Projekt-Konfigurationen können nachträglich angepasst werden, um weitere Deployment-Umgebungen oder Container hinzuzufügen. Diese Projektvorlagen sind sehr hilfreich bei der Konfiguration. Visual Studio speichert die Cloud Services (sprich Azure-Konten) und macht sie überall verfügbar. So kann rasch das richtige Konto gewählt werden. Werden weitere Ressourcen innerhalb Azure benötigt, können diese gleich mit erstellt werden. Dies verringert den Verwaltungsaufwand enorm. Nicht vergessen darf man allerdings, die Kosten für Azure unter Kontrolle zu halten.


Im ersten Schritt muss aber nicht immer ein Cloud-Dienst eingesetzt werden. Für die Entwicklung können Container genutzt werden, die lokal ausgeführt werden. Als Container kommt eine Kombination von HyperV und Docker zum Einsatz. Der Docker Container wird in einer speziellen Linux VM in HyperV ge­hostet und ausgeführt. Visual Studio übernimmt die komplette Konfiguration und den Start des Containers. Der Entwickler kann die Debug-Session wie gewohnt mit einem Druck auf die Taste F5 starten. Diese einfache Art des Debuggens ist eine grosse Erleichterung bei der täglichen Arbeit, da sie auch in der Cloud funktioniert. Zur Kontrolle zeigt Visual Studio während des Startens und Verbindens alle Ausgaben an.

DevOps

Nachdem die Entwicklung mit einem Container und/oder der Cloud integriert wurde, kommt als nächster Schritt der Übergang in den Betrieb. Microsoft spricht hier von Continuous Integration (CI) und Continuous Delivery (CD). Mit diesen beiden letzten Schritten wird ein kompletter DevOps-Prozess abgebildet. Der gesamte Ablauf kann mit Hilfe der Visual Studio Teams Services erweitert und konfiguriert werden. Nach und nach können weitere Schritte in den Auslieferungsprozess aufgenommen werden. Hat man eine Umgebung (zum Beispiel Test) fertig, können für die weiteren Umgebungen die Konfigurationen geklont und über Variablen an die Umgebung angepasst werden. In der Präsentation während des Launch-Events wurde innerhalb von zehn Minuten gezeigt, wie auf diese Weise der komplette Auslieferungsprozess für drei Umgebungen inklusive Testing erstellt werden kann. Dies sind eindrückliche Zahlen. Auch wenn es in der Praxis länger dauern wird – hier gewinnt man an Effizienz.

Weitere Features

Trotz der sehr guten Unterstützung des kompletten DevOps-Prozesses kann der Code wie gewohnt in Visual Studio entwickelt werden. Innerhalb der Entwicklungsumgebung hat Microsoft die Verwaltung der Projekte optimiert. Es gibt neu die Option, die Projektinformationen erst zu laden, wenn sie benötigt werden. Bei grösseren Projekten kann damit das Arbeiten innerhalb der Solution beschleunigt werden, da man oft nur ein bis zwei Projekte aktiv nutzt. Erweitert wurde auch die Suchfunktion in der Projektliste (Solution Explorer). Die Suchergebnisse werden in einem eigenen Fenster ausgegeben und navigieren direkt zu der gefundenen Stelle in der Datei.

Neu ist es auch möglich, ohne Projektdatei zu arbeiten. Dies ist vor allem für kleinere Tests oder Änderungen sehr nützlich. Der Entwickler kann den Code schreiben und kleine Tests durchführen, ohne zusätzlich eine Konfiguration anzugeben. Visual Studio 2017 hat zudem viele kleinere Erweiterungen bekommen, die direkt aus dem Editor genutzt werden können. Intellisense bietet die Möglichkeit, nach Typen (Namensräume, Klassen, Schnittstellen, etc.) zu filtern, um das Ergebnis besser einschränken zu können.


Diese Filterungsmöglichkeiten finden sich auch bei den Suchergebnissen unter "Alle Referenzen finden" wieder. Die visuelle Darstellung ist nun flacher und nach Typen gegliedert. Über die Glyphen können viele Aktionen direkt ausgelöst werden. Diese gab es bereits in Visual Studio 2015, mit der Version 2017 sind aber weitere hinzugekommen. Über Vorschläge, die visuell als Glühbirne dargestellt werden, können Refactoring-Aktionen wie das Extrahieren von Klassen oder das Umwandeln von Properties in Methoden ausgelöst werden. Bei Unit-Tests werden die Ergebnisse als Glyphe dargestellt und können damit direkt neu gestartet werden. Fehlende Unit-Tests werden erkannt und können über die Glyphe erstellt werden. Mit einem Klick auf die Ausführung-bis-Klick-Glyphe wird der Debugger gestartet und die Ausführung stoppt an der gewünschten Stelle. Über eine weitere Glyphe werden mögliche Performance-Probleme im Code angezeigt.

Analysen von Laufzeitfehlern sind mit dem neuen Exception Handler nun einfacher möglich. Es werden alle Exceptions dargestellt, einschliesslich der Inner Exceptions. Bei den Tests ist positiv aufgefallen, dass die Reaktionszeit deutlich kürzer ist als in Visual Studio 2015. Während des Debugging ist es nun auch möglich, direkt XAML-Code zu editieren, ohne den Debugger neu zu starten.

Fazit

Die neuen Features und Erweiterungen führen zu signifikanten Zeitersparnissen. Die modulare Installation beziehungsweise Architektur und das dynamische Nachladen von Projekten beschleunigen die Antwortzeiten. Der konsequente Einsatz von Glyphen im Editor, um kontextsensitiv weitere Aktionen auszulösen, und das direkte Editieren während des Debuggings tragen zu kürzeren Durchlaufzeiten bei. Aus diesen Gründen lohnt sich das Update für bereits bestehende Projekte, zumal mit Visual Studio 2017 die gleiche Kompatibilität zu Projektdateien besteht wie unter Visual Studio 2015.

Auf der anderen Seite wird es durch die grosse Vielfalt von Einsatzmöglichkeiten schwieriger, die richtigen Produkte und Komponenten für die eigene Entwicklung auszuwählen. Microsoft versucht dies durch die Workloads zu entschärfen, erhöht aber durch die Unterstützung immer weiterer Frameworks und Plattformen gleichzeitig auch die Komplexität. Es bleibt also abzuwarten, welche Frameworks sich durchsetzen werden. Viele stehen in direkter Konkurrenz, so zum Beispiel UWP zu Xamarin, Cordova/Ionic zu Xamarin oder .NET v4.6 zu .NET Core.


Durch die Modularisierung musste auch die Architektur dahingehend angepasst werden, wodurch das Risiko besteht, dass dies auf Kosten der Stabilität gehen kann. Dies bestätigt die lange Liste der bekannten Probleme in den Release Notes im Feedback-Kanal. Während den Tests mit dem letzten Release Candidate konnten jedoch keine grösseren Probleme festgestellt werden. Dies mag auch daran liegen, dass nicht alle Features genutzt werden konnten und insbesondere die neuen Funktionen getestet worden sind.

Der Autor

Christoph Möhring ist CTO von Allgeier (Schweiz) AG. Möhring hat mehr als 25 Jahre Erfahrung in der Software-Entwicklung und Architektur. Er hat hauptsächlich mit Produkten von Microsoft gearbeitet und Visual Studio seit seinen Anfängen eingesetzt. In seiner Rolle als Chief Technology Officer haben sich seine Schwerpunkte gewandelt hin zu Entwicklungs-/DevOps-Prozessen und Qualitätssicherung sowie zur strategischen Auswahl neuer Technologien.


Weitere Artikel zum Thema

Microsoft startet Preview-Programm für Visual Studio

10. März 2017 - Beim neuen Preview-Programm für Visual Studio haben Entwickler die Möglichkeit, ähnlich wie beim Windows Insider Program auf frühe Vorabversionen zuzugreifen und deren neue Funktionen zu testen.

Visual Studio 2017 ist da

7. März 2017 - Microsofts Entwicklersuite Visual Studio 2017 ist da. Der offizielle Release wird in einem zweitägigen Launch-Event gefeiert.


Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Wie hiess im Märchen die Schwester von Hänsel?
GOLD SPONSOREN
SPONSOREN & PARTNER