.NET Core – Was kommt in .NET Core 3.0?

Auf der Microsoft-Webseite gibt es was neues zum Thema .NET Core – Fokus Version 3.0. Dieser Artikel behandelt Technologien, die sich in der Vorschau befinden. Alle Angaben können sich ändern.

.NET Core – Was kommt in .NET Core 3.0?

.NET Core 3.0 ist die nächste Hauptversion der.NET Core Plattform. Es enthält viele interessante neue Funktionen, wie z.B. die Unterstützung von Windows-Desktop-Anwendungen mit Windows Forms (WinForms), Windows Presentation Foundation (WPF) und Entity Framework 6. Für die Webentwicklung bietet es Unterstützung für die Erstellung von client-seitigen Webanwendungen mit C# unter Verwendung von Razor Components (früher bekannt als Blazor). Und es enthält Unterstützung für C# 8.0 und .NET Standard 2.1.

Microsoft fügt Unterstützung für Internet-of-Things (IoT)-Szenarien mit .NET Core 3.0 hinzu. Man kann nun Hardware-Pins (zur Steuerung von Geräten und zum Auslesen von Sensordaten) auf dem Raspberry Pi und ähnlichen Geräten programmieren und über die serielle Schnittstelle auf allen unterstützten Betriebssystemen (z.B. mit einem Raspberry Pi oder Arduino) kommunizieren. Microsoft fügt in dieser Version auch die IoT-Geräteunterstützung für ARM64 hinzu, um die bereits vorhandene ARM32-Funktionalität zu ergänzen.

.NET Core 3.0 wird auch ML.NET vollständig unterstützen, das Open-Source-Framework für maschinelles Lernen, das für .NET-Entwickler entwickelt wurde. ML.NET unterstützt Produkte wie Azure Machine Learning, Windows Defender und PowerPoint Design Ideas. Mit ML.NET können Anwendungen viele beliebte maschinelle Lernszenarien wie Sentimentanalyse, Empfehlungen, Prognosen, Bildklassifizierung und mehr hinzufügen. Erfahre mehr unter bit.ly/2OLRGRQ.

Es wurde kürzlich die erste Vorschau von .NET Core 3.0 veröffentlicht. Weitere Informationen zu .NET Core 3.0 und zum Ausprobieren der Vorschau findet man unter aka.ms/netcore3preview1.

Desktop (WinForms und WPF) und Open Source

WinForms und WPF sind zwei der beliebtesten.NET-Anwendungstypen und werden von Millionen von Entwicklern verwendet. .NET Core 3.0 bietet Unterstützung für WinForms und WPF und bringt die Windows-Desktop-Entwicklung auf.NET Core. Bei.NET Core ging es immer um Open Source, und beide Frameworks werden in GitHub Open Source sein, zusammen mit dem Rest von.NET Core. Zum ersten Mal können Kunden die offene Entwicklung dieser Frameworks sehen und sogar helfen, indem sie Probleme melden, Fehler beheben oder bei der Entwicklung neuer Features live in GitHub helfen. Die WinUI XAML Library wird ebenfalls Open Source sein, und mit XAML Islands können Sie diese Controls in WinForms- und WPF-Anwendungen verwenden.

Viele der vorhandenen WinForms- und WPF-Anwendungen verwenden das Entity Framework für den Datenzugriff, so dass das Entity Framework 6 auch auf .NET Core unterstützt wird.

Man fragt sich vielleicht, warum man Desktop-Anwendungen auf.NET Core erstellen möchte. Das ist ganz einfach: Es gibt Zugriff auf alle Neuerungen in .NET Core. Man kann Anwendungen auf der neuesten Version des Frameworks erstellen, ohne .NET Core installieren zu müssen, und man kann sowohl die Anwendung als auch.NET Core in einer einzigen.EXE veröffentlichen..NET Core wurde so entwickelt, dass man mehrere Versionen auf einem Computer haben kann und die Version für eine Anwendung explizit festlegen.

ASP.NET Core 3

.NET Core 3.0 dreht sich jedoch nicht nur um den Desktop. Es gibt auch viele aufregende neue Funktionen, die für das Web entwickelt wurden. Lassen Sie uns einen Blick auf einige der Features werfen, an denen Microsoft arbeitet.

Eine häufige Frage von Kunden ist, wie man einen RPC (wie in .NET Remoting und Windows Communication Foundation) auf .NET Core erleben kann. Microsoft beteiligt sich am gRPC (grpc.io) Projekt, um sicherzustellen, dass gRPC erstklassigen Support für .NET-Entwickler erhält.

Anfang dieses Jahres hat Mircosoft ein Experiment zur client-seitigen Webentwicklung mit .NET gestartet, das Microsoft Blazor nennt. Blazor ermöglicht es, Web-UI-Komponenten zu schreiben, die direkt im Browser auf einer WebAssembly-basierten.NET-Laufzeit laufen, ohne eine einzige Zeile JavaScript zu schreiben. Man erstellt Komponenten mit der Razor-Syntax, die dann zusammen mit dem Code in normale.NET-Assemblies kompiliert werden. Die Assemblies und die WebAssembly-basierte.NET-Laufzeit werden dann in den Browser heruntergeladen und nur mit offenen Webstandards ausgeführt (keine Plugins oder Codetranspilation erforderlich).

Alternativ können die gleichen Komponenten auf dem Server mit .NET Core ausgeführt werden, wobei alle Benutzeroberflächeninteraktionen und DOM-Updates über eine SignalR-Verbindung abgewickelt werden. Wenn die Komponenten ausgeführt werden, verfolgen sie, welche Updates für das DOM erforderlich sind, und senden diese Updates über die anzuwendende SignalR-Verbindung an den Browser. UI-Ereignisse werden über die gleiche Verbindung an den Server gesendet. Dieses Modell hat mehrere Vorteile: Die Download-Größe ist viel kleiner, Ihr Code ist auf dem Server zentralisiert, und Sie erhalten alle Funktionen und Leistungsvorteile der Ausführung auf .NET Core.

Für .NET Core 3.0 integriert Microsoft das Blazor-Komponentenmodell in ASP.NET Core. Microsoft nennt dies das integrierte Komponentenmodell Razor Components. Razor Components ermöglichen eine neue Ära komponierbarer Benutzeroberflächen mit ASP.NET Core und Full-Stack-Webentwicklung mit .NET. Ursprünglich für.NET Core 3.0, werden Razor Components auf dem Server ausgeführt, entweder als eigenständige routinierbare Komponenten oder verwendet von Razor Pages und Views. Die gleichen Komponenten können aber auch auf der Client-Seite der WebAssembly ausgeführt werden. Parallel zu den Arbeiten an .NET Core 3.0 werden wir die Arbeit an der Unterstützung von Razor Components on WebAssembly mit der interpreterbasierten.NET Runtime fortsetzen, die wir in einem späteren Release erwarten. Später planen wir auch die Unterstützung für die vollständige vorzeitige Kompilierung von.NET-Code in WebAssembly, was zu erheblichen Verbesserungen der Laufzeitperformance führen wird.

EF Core 3.0

LINQ ist ein beliebtes.NET-Feature, das es Ihnen ermöglicht, Datenbankabfragen zu schreiben, ohne die Sprache Ihrer Wahl zu verlassen, und die Vorteile von Rich-Type-Informationen zu nutzen, um IntelliSense zu erhalten und die Typprüfung zur Kompilierzeit durchzuführen. Aber mit LINQ können Sie auch eine praktisch unbegrenzte Anzahl komplizierter Abfragen schreiben, und das war schon immer eine große Herausforderung für LINQ-Anbieter. EF Core löst dies teilweise, indem es wählt, welche Teile einer Abfrage in SQL übersetzt werden können, und dann den Rest der Abfrage im Speicher ausführt. In einigen Situationen kann dies wünschenswert sein, aber in vielen anderen Fällen kann es zu sehr ineffizienten Abfragen kommen, die erst identifiziert werden, wenn eine Anwendung in Produktion ist.

In EF Core 3.0 plant Microsoft, tiefgreifende Änderungen an der Funktionsweise der LINQ-Implementierung und deren Test durchzuführen, um sie robuster zu machen (z.B. um zu vermeiden, dass Abfragen in Patch-Releases abgebrochen werden), um sie in die Lage zu versetzen, mehr Ausdrücke korrekt in SQL zu übersetzen, um sie in mehr Fällen effiziente Abfragen generieren zu lassen und um zu verhindern, dass sehr ineffiziente Abfragen bis zur Produktion unentdeckt bleiben.

Microsoft hat an einem Cosmos DB-Anbieter für EF Core gearbeitet, um es Entwicklern, die mit dem EF-Programmiermodell vertraut sind, zu ermöglichen, Azure Cosmos DB problemlos als Anwendungsdatenbank zu nutzen. Ziel ist es, einige der Vorteile der Cosmos DB-ähnlichen globalen Verteilung, der „always on“-Verfügbarkeit, der elastischen Skalierbarkeit und der geringen Latenzzeit noch besser für .NET-Entwickler zugänglich zu machen. Der Anbieter wird die meisten EF Core-Funktionen, wie automatische Änderungsverfolgung, LINQ- und Wertekonvertierungen, gegen die SQL-API in Cosmos DB aktivieren.

Weitere Funktionen, die Microsoft in EF Core 3.0 aufnehmen wollen, sind Property Bag-Entitäten (Entitäten, die Daten in indizierten Eigenschaften anstelle von regulären Eigenschaften speichern), die Möglichkeit, Datenbankansichten in Abfragetypen zurückzuentwickeln, und die Integration mit neuen C# 8.0-Funktionen wie IAsyncEnumerable<T>-Unterstützung und nullable Referenztypen.

C# 8.0

C# 8.0 ist die nächste Version von C# und verbessert die Sprache auf mehrere wesentliche Arten. Nullable-Referenz-Typen helfen, Null-Referenz-Ausnahmen zu vermeiden und fördern nullsichere Codierungspraktiken. Man kann sich für die Funktion entscheiden, um Warnungen zu erhalten, wenn Null in Variablen oder Parametern vom Typ string zugewiesen wird. Wenn man null will, muss man das mit einem nullbaren Referenztyp „string?“ sagen.

Async-Streams funktionieren bei asynchronen Datenströmen, was Async/Await bei einzelnen asynchronen Ergebnissen getan hat. Ein neuer Framework-Typ IAsyncEnumerable<T> ist die asynchrone Version von IEnumerable<T> und kann ebenfalls foreach’ed over und yield return’ed sein

 

 

vor 5 Monaten