Fragen und Antworten zu ASP.NET Core und was es für Entwickler neues bietet

Was ist das Neue in ASP.NET Core? [Interview]
Kommentare

ASP.NET MVC, ASP.NET Web API und Entity Framework sind ein fester Bestandteil in der .NET-Welt, wenn es um Websites, Bereitstellung von APIs und Datenbankzugriff geht. Mit dem neuen .NET Core erweitert Microsoft die Welt des .NET Frameworks und geht neue Wege. Damit steht neben dem klassischen Framework eine modulare Variante bereit, die sich als Cross-Plattform-Framework nun auch auf Linux und macOS zu Hause fühlt.

Im Vorfeld des vom 3. – 5. Mai in München stattfindenden .NET Summits haben wir mit Manuel Rauber, Thinktecture AG, über die neuen Möglichkeiten von ASP.NET Core gesprochen und vor allem gefragt, was diese Neuerungen für die Entwickler bedeuten.

Was bedeuten die Neuerungen in ASP.NET Core?

Wenn man sich als Entwickler mit dem „alten“ ASP.NET wohlfühlt, kommt man mit dem „neuen“ ASP.NET Core dann auch gut zurecht?

Manuel Rauber: Der Grundgedanke von ASP.NET Core zielt auf plattformübergreifende, performante, skalierbare (Micro-)Service-basierte (Cloud-)Architekturen ab – was durch den kleinen Footprint von ASP.NET Core und einer bereits fabelhaften Unterstützung in Microsoft Azure ermöglicht wird. Dabei bringt es viele altbekannte Konzepte mit sich (Controller, HTTP-Pipeline oder Datenbankzugriff via Entity Framework) und verbessert und vereinfacht diese. Das hilft uns Entwicklern, uns schnell zurechtzufinden, sodass man sich auf das Lernen der neuen Konzepte und Ideen von ASP.NET Core konzentrieren kann. Unterstützt wird dies durch bekanntes Tooling, wie Visual Studio oder NuGet.

Allerdings ist dieser Vorteil auch zugleich ein Nachteil: ASP.NET Core ist aktuell „sehr im Fluss“. Viele Dinge, wie z. B. das Projektformat oder Build-Toolings, sind noch von teilweise brechenden Änderungen betroffen – was natürlich das Zusammenspiel der verschiedenen Werkzeuge erschwert. Je nach Zusammenstellung von Zielframework, Tooling-Version und eingesetzten NuGet-Packages werden beim Bauen der Anwendung DLLs „vergessen“, was dann zu einem Laufzeitfehler führt.

Dazu kommt, dass einige APIs nur als Stub existieren und (noch) eine NotImplementedException oder PlatformNotSupportedException werfen, bspw. bei Reflection von Custom Attributes oder beim Zugriff auf bestimmte Funktionen im Netzwerkstack unter Linux.

Manuel Rauber

Manuel RauberAls Software Architect bei der Thinktecture AG unterstützt Manuel Rauber die Entwicklung mobiler Cross-Plattform-Lösungen mit Angular 2, Cordova, Electron und Node.js oder .NET im Backend. In der Windows Developer und auf seinem Blog (manuel-rauber.com) schreibt er regelmäßig über seine Erfahrungen.

Kann man ASP.NET Core zusammen mit Lösungen, die noch auf .NET Framework 4.6 oder älter basieren, verwenden?

Rauber: Zum einen besteht die Möglichkeit, ASP.NET Core side-by-side mit einem .NET Framework zu betreiben. Das ermöglicht das Entwickeln neuer Anwendungen mit ASP.NET Core, während bestehende Anwendungen weiterhin auf dem „normalen“ .NET Framework laufen.

Zum anderen kann eine ASP.NET-Core-Anwendung mit einem Zielframework von .NET 4.5.1 oder höher entwickelt werden. Das erlaubt das direkte Einbinden und Benutzen bestehender Bibliotheken in Verwendung mit den neuen APIs von ASP.NET Core. Zu beachten ist allerdings, dass nur .NET-Standard-kompatible APIs aus dem .NET Framework 4.5.1+ genutzt werden können. APIs, wie die Windows Communication Foundation (WCF), Windows Workflow Foundation (WWF) oder WebForms stehen nicht zur Verfügung. Die aktuelle Version, .NET-Standard 2.0, ist kompatibel mit dem .NET Framework 4.6.1 sowie der vNext-Version von ASP.NET Core.

Welche Unterschiede gibt es, wenn man auf Linux oder macOS arbeitet – oder dafür entwickelt?

Rauber: Der wohl größte Unterschied beim Entwickeln auf Linux oder macOS ist, dass kein „full-fledged“ Visual Studio zur Verfügung steht. Daher entsteht ein neues Tooling-Universum für die Plattformen. Sei es in Form von Visual Studio Code oder Visual Studio for Mac (ehemals Xamarin Studio) von Microsoft direkt oder via alternativen IDEs wie JetBrains Rider. Die Tools werden von Update zu Update besser, sodass man sich auch hier ziemlich schnell „wie zu Hause“ fühlt.

Allgemein muss man beachten, dass .NET Core nur noch APIs zur Verfügung stellt, die auf allen unterstützten Plattformen, also Windows, Linux und macOS, existieren. Beim Zugriff auf Hardwareressourcen, wie z. B. das Dateisystem der Festplatte, müssen auch Plattformunterschiede beachtet werden. Beispielsweise, dass das Dateisystem von Linux oftmals case-sensitive ist oder dass uns auf Linux oder macOS natürlich kein „C:\Windows“ zur Verfügung steht. Hier sollte man immer auf die vorhandenen ASP.NET Core APIs zurückgreifen, da diese bereits einige Plattformunterschiede beachten.

.NET Summit 2017Vom 3. – 5. Mai präsentieren die Entwickler Akademie und der Windows Developer den nächsten .NET Summit in München. Entwickler und Softwarearchitekten erhalten in 10 Power Workshops einen intensiven und praxisorientierten Einblick in die Welt .NET, Azure, DevOps sowie Cross-Plattform mit Angular und Xamarin.

Was sind eigentlich, neben den neuen Plattformen, die Vorteile von ASP.NET Core?

Rauber: Das Open-Source-Framework ASP.NET Core bringt viele Konzepte vom „alten“ ASP.NET mit – und verbessert sie. Beispielsweise wurde die Entwicklung von Controller und ApiController hinter dem gemeinsamen Konzept ControllerBase vereinheitlicht. Lernt man dieses Konzept, kann man Controller gleichermaßen für MVC (via Razor View Engine) oder Web API entwickeln.

Zur Vereinfachung der Komposition von Controllern, Services und weiteren Abstraktionslayern bringt ASP.NET Core von Haus aus eine Dependency Injection mit. Das hilft uns, unsere Use Cases in kleine, gekapselte Komponenten zu bringen, die dann auch wunderbar per Unit Tests getestet werden können.

Ein weiterer wichtiger Part, vor allem im Zusammenspiel mit Cloud-Umgebungen, ist das Lesen von anwendungsspezifischen Konfigurationen. ASP.NET Core abstrahiert hierbei das Einlesen von Konfigurationen aus verschiedenen Quellen. Wenige Zeilen Code sind ausreichend, um JSON-Dateien, Umgebungsvariablen oder Kommandozeilenargumente zu nutzen.

Ein letzter Vorteil ist, dass ASP.NET Core auf Basis von .NET Core entwickelt wurde. .NET Core erlaubt die Installationen mehrerer Frameworkversionen side-by-side. Das wiederum erlaubt uns Entwicklern, neue (Micro-)Services mit der neusten Version von ASP.NET Core zu entwickeln und zu betreiben, ohne dass wir Altanwendungen deswegen anpassen müssen.

Mehr zu ASP.NET Core gibt’s in Manuels Workshop auf dem .NET Summit.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -