Der Lockdown scheint Microsoft nicht allzu sehr betroffen zu haben. In diesem Jahr hat sich ein Füllhorn an neuer Software aufgetan – das sind das lang ersehnte Windows 11, das neue Visual Studio 22, und natürlich .NET Framework 6.0. In diesen nicht so lustigen Zeiten sind solche Nachrichten wirklich willkommen.
Lassen Sie uns vielleicht das interessanteste neue Produkt für Entwickler, das .NET 6.0 betrachten. Kaum haben Entwickler ihre Projekte auf NET 5.0 umgestellt, kommt schon die nächste Version. Um es gleich vorwegzunehmen: ich möchte ganz offen sagen, die Version 6 ist keine grundlegende neue, sondern eine nachgearbeitete 5. Version. Bei den meisten Änderungen handelt es sich um Verbesserungen oder Umgestaltungen gegenüber der letztjährigen Version, aber die sechste Version ist jetzt eine LTS-Version (Long Time Support) mit dem langfristigen Support. Dies gilt von nun an für alle geradzahligen Versionen.
Wie Sie sich erinnern, hat Microsoft ab der .NET 5.0 Version beschlossen, alle seine Frameworks in einem einzigen zusammenzufassen, um den ganzen "Zoo" wegzumachen. Das heißt, das ursprüngliche .NET Framework Konzept wurde wieder eingeführt, nur jetzt ist es kein Monolith, sondern sieht nur so aus.
Die Änderungen und Ergänzungen zu NET 6.0 sind zahlreich, und damit dieser Artikel nicht zu einer langwierigen Abhandlung wird, werde ich kurz die Wichtigsten und die Interessantesten davon zusammenfassen:
Das aktualisierte Crossgen-Dienstprogramm verfügt über eine zweite Version. Die alte Vorkompilierungstechnologie war ehrlich gesagt unvollkommen und erlaubte nur die Generierung von nativem Code für die Plattform, auf der das alte Crossgen-Dienstprogramm gestartet wurde. Jetzt können Sie den JIT-Compiler unabhängig von der Plattform mit verschiedenen Strategien und Optimierungen je nach Situation ausführen.
Hierbei handelt es sich um eine Compiler-Optimierung, um die Kompilierung von Programmteilen zu priorisieren. Der Punkt ist, dass bei weitem nicht alle Programmteile im realen Betrieb verwendet werden oder nur äußerst selten verwendet werden, zum Beispiel einige exotische Verzweigungen in else if. Sie können also ein Programm besser optimieren, wenn der Compiler die am häufigsten verwendeten Programmblöcke weiß. Sie können nun den Analysator aktivieren, um häufig und selten benutzte Fragmente beim Betrieb des Programms zu erkennen und ein Optimierungsprofil zu erstellen. Es gibt drei Optimierungsszenarien:
Diese Funktion wird Sie besonders überraschen. Endlich ist das Debuggen von Anwendungen viel einfacher geworden! Jetzt können Sie das Debuggen einmal ausführen und den Code "live" bearbeiten. Wenn Sie schon einmal Javascript in Ihren .NET Core-Projekten debuggt haben, werden Sie das Prinzip sofort verstehen.
Wahrscheinlich erinnern Sie sich an eine Sache wie "Ändern und weitermachen". Und wir hatten früher die Möglichkeit, den Code zur Laufzeit zu ändern, aber es war nicht sehr praktisch. Wir mussten Haltepunkte setzen, und die Anwendung wurde angehalten. Vor der Stelle, die wir ändern wollten, musste ein Haltepunkt gesetzt werden. Und die Möglichkeiten zur Veränderung waren sehr begrenzt.
https://docs.microsoft.com/en-us/visualstudio/debugger/supported-code-changes-csharp?view=vs-2019
Wir können den Code nun direkt zur Laufzeit während des Debuggens korrigieren. Speichern Sie dann die Änderungen und sehen Sie sie in Echtzeit. Dies beschleunigt das Debuggen von Programmen erheblich, insbesondere wenn Sie wissen, was und wo zu beheben ist, und das Ergebnis sofort sehen möchten, ohne das Debuggen neu zu starten. Und ja, das funktioniert jetzt auch in VS Code. Die Liste der verfügbaren Änderungen ist nicht sehr umfangreich und kann hier eingesehen werden.
Im Rahmen der Globalisierung, d. h. der Zusammenführung aller Frameworks in ein einziges, fügt Microsoft die Unterstützung für Xamarin zu .NET 6 hinzu. Die Entwicklung für macOS, iOS und Android in VisualStudio ist jetzt für uns verfügbar. Im Standard-SDK funktioniert es jedoch nicht. Sie müssen die Optional SDK Workloads installieren. Tatsächlich wird die Entwicklung immer bequemer. Ein Android-Projekt können Sie jetzt mit einem Befehle erstellen:
dotnet new android
Der Name Xamarin wurde fallen gelassen. Jetzt wurde uns die Multi-Plattform-App-Benutzeroberfläche oder abgekürzt MAUI präsentiert.
Ein so interessantes Tool wie Minimal API kann man nicht ignorieren. Dieses Framework ermöglicht es Ihnen, mit minimalem Code auszukommen, um Webmethoden zu erstellen und darauf zuzugreifen. Sie müssen nicht die ganze MVC-Bündelung erstellen, Controller- und Methoden-Überschriften konfigurieren, um das Routing einzurichten. Außerdem wird auch Setup.cs nicht mehr benötigt. Es reicht nur Program.cs, in dem Sie sofort Webmethoden mit Routing erstellen können.
app.MapGet("/", (Func<string>)(() => "Hello World!"));
Die unbenannte Funktion gibt auf jede Anfrage "Hello World!" zurück. Dies ist genau das, was für Microservices oder Prototyping benötigt wird.
Microsoft hat alle unterstützten Betriebssysteme veröffentlicht, und zwar:
Die Unterstützung für ARM64 ist ab NET 5 für Windows verfügbar. In Version 6 wurde sie auf die ARM64-Prozessoren von Apple erweitert.
Obwohl Blazor ein Framework für Browseranwendungen ist, hat Microsoft beschlossen, Muster zu brechen und die Erstellung von Desktop-Anwendungen zu ermöglichen. Offensichtlich hat sich Blazor gut bewährt.
Der Razor-Compiler wurde zu Roslyn Source Generators verschoben, was den Assembly erheblich beschleunigt hat. Roslyn Source Generators erschien bereits in NET 5 und sorgte für viel "Aufsehen", weil es die Möglichkeit bot, während der Entwicklung C # Code zur Laufzeit zu generieren.
Auch unser beliebtes LINQ wurde nicht vernachlässigt. In jeder .NET-Version wird versucht, der Sprache etwas Neues hinzuzufügen (insbesondere in .NET 5), und diese Version bildet da keine Ausnahme. In den letzten Jahren wurde die LINQ-Leistung verbessert sowie die Code-Duplizierung reduziert. Hier ist eine kleine Liste mit nützlichen "Tricks":
Und natürlich die Änderungen an der System.Text.JSON-Bibliothek. Die wichtigsten Änderungen wurden am Serializer vorgenommen. Und zwar:
Eine sehr interessante Funktion ist auch die Unterstützung für den Umgang mit den JSON-Dokumenten wie mit DOM. Diese Funktion ist sehr nützlich, da man oft keine POCO-Objekte für einfache Operationen erstellen möchte. Vergessen Sie nicht, dass der DOM-Ansatz für JSON ohnehin eine Leistungsabnahme und Ressourcenüberschreitung darstellt. Uns wurde versichert, dass dies nicht der Fall sein wird, aber wir werden es in der Praxis herausfinden.
Das HTTP-Protokoll existiert schon seit Ewigkeiten. Es ist allgemein bekannt, dass es auf einem anderen TCP-Protokoll basiert, das noch länger existiert. Ja, die rasante Entwicklung des Internet hat HTTP in einen Winkel getrieben - vor dem Hintergrund der zunehmenden Netzbandbreite sieht es wie ein schwaches Glied aus. Und nun haben wir endlich die dritte Version dieses wunderbaren Protokolls bekommen, die Probleme zwar nicht beseitigt, aber deutlich verringert.
Das neue QUIC-Protokoll, das TCP ersetzt, ist bei Paketverlusten schneller. Beim Verbindungsaufbau geht es schneller. Damit kann man die Daten parallel übertragen. Und es ist grundsätzlich sicher, da die Anfragen verschlüsselt werden.
Eine neue Klasse, die Warteschlange mit PriorityQueue<TElement,TPriority> Priorität erschienen. Sie können die Priorität für jedes hinzugefügte Element festlegen und eine Prioritätswarteschlange erstellen. Diese Elemente werden beginnend mit einer niedrigeren Priorität beseitigt.
Auch das Datum wurde überarbeitet. Die interessantesten Änderungen sind:
Die neuen Funktionen der Version 10 sind Gegenstand eines separaten Artikels. Daher werde ich hier nicht einmal die Interessantesten erwähnen. Im Moment können Sie sich diese Liste mit Änderungen ansehen.
Fasen wir kurz zusammen. Was bietet uns.NET 6:
Selbstverständlich haben wir unsere Produkte auf ihre Kompatibilität mit dem neuen Framework getestet. FastReport funktioniert mit .NET 6 genauso gut wie mit der 5. Version.
Unserer Meinung nach ist die Konsolidierung von Plattformen, Sprachen und Technologien der richtige Weg. Ja, das technische Wissen der jüngeren Generation nimmt ab, aber es wird nicht mehr benötigt. So wie das Automatikgetriebe das Schaltgetriebe ersetzt. Die Leute müssen einfach nur fahren und nicht über Gänge und Motordrehzahlen nachdenken. Viele moderne Entwickler wollen auch die technischen Einzelheiten der Implementierung dieser oder jener Prozesse nicht verstehen. Jetzt können sie sich nur noch mit dem kreativen Entwicklungsprozess auseinandersetzen.