Mittendrin.

Zurück

Flurfunk der eXperts.

Hier erfahren Sie mehr über eXperts, Technologien und das wahre Leben in der SDX.

ASP.NET Core 1.0 – jetzt auf allen Plattformen?

13.04.201608:00 Uhr , Bojan Kosanovic

ASP.NET Core 1.0, der noch im Entstehen befindliche Nachfolger von ASP.NET 4.x, ist ebenso modular, quelloffen und betriebssystemübergreifend wie das neue .NET Core. Was bringt uns das neue ASP.NET und wird es uns demnächst ermöglichen, auch auf Linux und OS X lauffähige Websites zu entwickeln wie bisher für Windows?

Einleitung
In meinem vorherigen Artikel gab ich einen Überblick über .NET Core 1.0 – Microsofts neue, wenngleich noch unfertige, plattform- und betriebssystemübergreifende Technologie, die womöglich in der Zukunft das herkömmliche, nur auf Windows lauffähige .NET Framework ersetzen wird. Dies betrifft allerdings auch alle auf dem Core aufbauenden Frameworks, die entweder ebenso neu entwickelt oder nach .NET Core portiert werden müssen.

ASP.NET Core 1.0
ASP.NET Core 1.0 ist eines der ersten Frameworks, die auf Core aufbauen, welches analog zu .NET Core die neueste Version der ASP.NET-Familie darstellt und ebenso noch in Entwicklung ist. Es ist ebenfalls modular aufgebaut (Komponenten per NuGet beziehbar), quelloffen, plattform- und betriebssystemübergreifend verfügbar.

Neuerungen und Unterschiede zum Vorgänger
Zwar unterstützt ASP.NET Core 1.0 MVC- und WebAPI-Projektvorlagen, doch deren Implementierung unterscheidet sich von ASP.NET 4.6. Im neuen ASP.NET wurden nämlich die einst unterschiedlichen Controller-Implementierungen – ApiController (Web API 2) aus dem System.Web.Http- und Controller (MVC 5) aus dem System.Web.Mvc-Namespace – in einen Controller (MVC 6) vereint. Die Unterstützung für SignalR und Web Pages wurde bereits angekündigt. Dies lässt sich allerdings nicht für WebForms sagen. Es ist durchaus vorstellbar, dass diese Technologie überhaupt nicht nach ASP.NET Core 1.0 portiert werden wird.

In der neusten Version hat sich auch die Projektstruktur geändert. Manche Dateien wurden fallengelassen und neue eingeführt, welche die bisherigen Information und Logik in kleineren, auf den konkreten Konfigurationszweck fokussierten Dateien enthalten. Des Weiteren hat Microsoft gänzlich auf XML als Format für Konfigurationsdateien verzichtet und ist an seiner Stelle auf JSON umgestiegen. Der Grund für diese Strukturänderungen war, dass bislang zu viel Konfiguration über „web.config“ und „packages.config“ sowie die Projektdatei selbst stattfand.

ASP.NET Core 1.0 verwendet standardmäßig seinen eigenen, eine minimale Funktionalität aufweisenden Dependency Injection Container, welcher aber nicht andere Container ersetzen soll. Bisher gibt es noch keinen passenden Bootstrapper für Unity, weswegen sich man sich bisweilen nach einem anderen Container (z.B. AutoFac) umschauen muss, sofern die Funktionalität des von Hause mitgelieferten DI-Containers nicht ausreicht.

Das Beste aus beiden Welten
Obwohl der Name „Core“ dies suggeriert, gilt nicht zwangsläufig, dass man .NET Core in Kombination mit ASP.NET Core verwenden muss. Wenn man in ASP.NET Core 1.0 entwickelt, kann man nämlich für beide Laufzeitumgebungen gleichzeitig entwickeln – sowohl für das „alte“ .NET Framework als auch für .NET Core (siehe Abbildung 1).

Abbildung 1 – Auswahlmöglichkeiten der Laufzeitumgebung für ASP.NET Core 1.0 und ASP.NET 4.6 [2]

Falls die bisher nach .NET Core 1.0 portierte Funktionalität nicht ausreichen oder manche Programmbibliotheken nicht mit .NET Core kompatibel sein sollten, kann man in den Projekteinstellungen aus den zu unterstützenden Frameworks einfach .NET Core entfernen und weiterhin nur für .NET Framework 4.6 entwickeln. Im Endeffekt hat man also das vollständige .NET Framework zur Verfügung und kann trotzdem ASP.NET Core 1.0 Anwendungen schreiben.

Core oder Nicht-Core – das ist hier die Frage
Laut Scott Hanselman [2] sollte man bei der Wahl des zu verwendenden ASP.NET-Frameworks bedenken, dass es sich bei ASP.NET 4.6 um die ausgereiftere Plattform handelt, da praxiserprobt und bereits heute verfügbar. Von ASP.NET Core 1.0 dagegen gibt es gerade mal das erste Release, das bis jetzt lediglich Web API und MVC-Projekte unterstützt. Obwohl ASP.NET Core 1.0 den Beginn eines neuen Kapitels darstellt, wird ASP.NET 4.6 bis auf Weiteres voll unterstützt und auch weiterentwickelt.

In einem nachfolgenden Artikel werde ich diese Kernfrage noch im Kontext eines Portierungsversuchs unserer hauseigenen Web API detaillierter beleuchten.

Fazit
Im Zusammenspiel mit dem betriebssystemübergreifenden .NET Core 1.0 versucht Microsoft, ASP.NET Core 1.0 auch auf Linux und OS X verfügbar zu machen. Das neue ASP.NET kennt keine Unterscheidung zwischen Web API- und MVC-Controllern mehr und basiert nur noch auf MVC 6. Es kann auch auf dem vollständigen, „alten“ .NET Framework laufen, welches mehr Funktionalität bietet, praxiserprobt und voll ausgereift ist. Man kann deshalb ohne Weiteres auch ASP.NET 4.6 weiterhin verwenden.

Referenzen

1. http://docs.asp.net/en/latest/conceptual-overview/understanding-aspnet5-apps.html
2. http://www.hanselman.com/blog/ASPNET5IsDeadIntroducingASPNETCore10AndNETCore10.aspx

2 Kommentare

15.04.20168:49 Uhr
Tino F.

Es tut mir ja leid, aber dieser Beitrag ist mir viel zu unaussagekräftig… zu wenig Konkretes und zu viele fehlende Informationen. Hier wurde der Kern von ASP.NET Core und seine Vorteile überhaupt nicht erfasst. Self-contained web apps z.B., echte side-by-side Versionierung, selbst kein Wort zu DNX/dotnetCLI… das ist ein wesentlicher Punkt! Überhaupt spielt das Tooling unter ASP.NET Core im Kontext moderner Webentwicklung mit Gulp, Bower, NPM etc. eine große Rolle. Zudem Infos über die neue modulare HTTP Pipeline, etc. pp. … auch wenn ein Artikel nicht alles abbilden kann, sowas würde ich auf jeden Fall erwarten. Darüber hinaus ist mir der letzte Satz („Man kann deshalb ohne Weiteres auch ASP.NET 4.6 weiterhin verwenden.“) zu platt, er stimmt einfach nicht.

Viele Grüße aus Nürnberg,
Tino

20.05.201615:21 Uhr
Bojan Kosanovic

Vielen Dank für Ihren Kommentar! Aufgrund eines Problems auf unserer Website kann ich leider erst jetzt antworten.

Die von Ihnen genannten Punkte sind selbstverständlich wichtig, aber mein Artikel wollte keinen umfassenden Überblick über alle neuen Features geben. Hintergrund war nämlich die Portierung eines vorhandenen Web API-Projekts auf die neue Technologie, bei der viele der von Ihnen erwähnten Features keine oder nur eine untergeordnete Rolle spielten. Herausgearbeitet werden sollte, dass ASP.NET Core aus der Perspektive eines Entscheiders derzeit noch nicht den Reifegrad hat, um eine Portierung ins Auge zu fassen. In diesem Kontext ist auch das Zitat von Scott Hanselman zu sehen. Aus der Sicht eines Entwicklers, der mit einem erweiterten Scope an die Technologie herangeht, ist dies sicher nicht so. Dennoch sind an dieser Stelle auch Aspekte wie z. B. der Mangel an Dokumentation und funktionsfähigen Codebeispielen sowie die derzeit noch im Fluss befindliche API zu nennen. Aus meiner Sicht hat sich die Aussage von Scott Hanselman bestätigt und dies wird auch in der näheren Zukunft so bleiben.

Viele Grüße
Bojan Kosanovic

Dein Kommentar wartet auf Freischaltung.

Artikel kommentieren

Zurück

Tag Cloud


Kontakt aufnehmen


Anrufen

Gerne beantworten wir Ihre Fragen in einem persönlichen Gespräch!


Kontakt aufnehmen

Schreiben Sie uns eine E-Mail mit Ihren Fragen und Kommentaren!