Hallo allerseits! Heute schauen wir uns die verschiedenen Chips und Änderungen an, die in der .NET Core-Plattform erschienen sind, und vergleichen sie mit dem Framework. Ich habe den Artikel zum besseren Verständnis in Module unterteilt. Dieser Artikel ist für diejenigen interessant, die zu .NET Core wechseln oder es bereits verwenden.
Stack-Technologie
Wir haben derzeit drei Plattformen: .NET Framework, Mono und .NET Core. Jede Plattform enthält die folgenden Technologien:
NET Framework - WPF, WinForms, ASP.NET (DNX-Implementierung), WCF
NET Core - UWP, ASP.NET Core, WA, Xamarin (.NET Standard), Avalonia und andere
Mono- Xamarin (PCL, Share-Projekt), Unity, ASP.NET, WinForms (plattformübergreifend)
NET Core (3.0) - Alles ist dasselbe wie .NET Core über + WPF und WinForms, ML.NET
NET Standard
Es gibt auch einen .NET-Standard. Dies ist eine Reihe von Klassen, Methoden und Schnittstellen, mit denen Sie gemeinsamen Code für alle oben aufgeführten Plattformen schreiben und verwenden können. Sie können auch Konsolenanwendungen darauf schreiben. Kurz gesagt, dies ist dieselbe PCL, funktioniert jedoch auf allen oben aufgeführten Plattformen.
Plattformübergreifend
Ich werde Ihre Aufmerksamkeit nicht darauf richten, sondern lediglich die Betriebssystemunterstützung für NET Core-Projekte auflisten:
• Windows
• Linux
• MacOS
Unterstützt außerdem das Starten unter ARM-Prozessoren unter Linux und Windows.
Abhängigkeit
Im Rahmen der Kreuzkompatibilität umfasst die Anwendungsentwicklungsplattform eine modulare Infrastruktur. Es wird über NuGet ausgegeben, und Sie können auf die Stapelfunktionen anstatt auf eine große Baugruppe zugreifen. Als Entwickler können Sie leichtgewichtige Anwendungen erstellen, die nur die erforderlichen NuGet-Pakete enthalten, wodurch Ihr Programm sicherer und produktiver wird.
Die modulare Infrastruktur ermöglicht auch schnellere Updates der .NET Core-Plattform, da betroffene Module einzeln aktualisiert und freigegeben werden können.
Csproj
Lassen Sie uns nun tiefer gehen und genauer sehen, was wir in den Projekten unter der Haube haben. Beim Erstellen eines neuen Projekts ist jeder von Ihnen auf die Datei MyProject1.csproj gestoßen (der Name kann abweichen). Diese Datei ist für die Kompilierungseinstellungen für dieses Projekt, die Abhängigkeiten anderer Projekte oder Bibliotheken (Bibliotheken) und vieles mehr verantwortlich.
Ich habe für Sie ein Beispiel dafür, wie ich beschlossen habe, ein Projekt in .NET Standard umzuschreiben. Werfen wir einen Blick darauf, wie es vorher war (Framework):

Leider passt diese Datei nicht vollständig auf meinen PC (es gibt noch Referenzen). Und jetzt wollen wir sehen, wie es nach der Übertragung wurde:

In NET Core und .NET Standard wurde csproj stark vereinfacht. Besonders „ballistische“ können feststellen, dass sich einige geändert haben. Ich entfernte das Unnötige und ersetzte es durch bequemere Werkzeuge. Nach dem Umschreiben von csproj bemerkte ich, dass die Arbeit mit NuGet-Paketen merklich weniger Zeit in Anspruch nahm. Wie Sie verstehen, ist das Bearbeiten einer neuen Version von csproj viel bequemer, da es nicht mit zusätzlichen Zeilen überfüllt ist.
Leistung & Verbesserungen
• Geänderter Zufall
• Modifizierter HttpClient
• Optimierte Zyklen
• Optimierte Liste, Array
• Optimierter Stream, MemoryStream
• Und vieles mehr
In diesem Artikel werde ich nicht alle Änderungen berücksichtigen. Dies wird ein separater Artikel sein. Aber schauen wir uns ein kleines Beispiel in der List-Sammlung an:
var list = new List<int>(); for (int i = 0; i < 100000000; i++) { list.Add(i); list.RemoveAt(0); }
Ich habe es auf beiden Plattformen über
Benchmarkdotnet.org ausgeführt . Nach den Tests habe ich folgende Ergebnisse erhalten:
Core 2.2.4 x64 RyuJITMethode : BenchmarkList
Mittelwert : 370,1 ms
Fehler : 0,3761 ms
StdDev : 0,3518 ms
Framework 4.7.2 x64 RyuJITMethode : BenchmarkList
Mittelwert : 481,9 ms
Fehler : 1,210 ms
StdDev :
1,011 ms
Wie Sie sehen können, ist die Betriebsgeschwindigkeit (zeitweise) zugunsten von Core erheblich unterschiedlich.
Microsoft versucht nicht nur, Entwicklern praktische Entwicklungstools zur Verfügung zu stellen, sondern verbessert auch die grundlegenden Dinge, die zu Verbesserungen und Optimierungen Ihrer Projekte führen.
Tier-Kompilierung
Dies ist eine Funktion, die die Laufzeit anpassungsfähiger macht, um den JIT-Compiler zu verwenden, um die Startleistung zu verbessern und den Durchsatz zu maximieren.
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <LangVersion>7.3</LangVersion> <TieredCompilation>true</TieredCompilation> <Platforms>AnyCPU;x64</Platforms> </PropertyGroup> </Project>
Kompiliert das Projekt so schnell wie möglich.
Optimiert die gängigsten Methoden.
Diese Funktionalität beschleunigt die Erstellung Ihres Projekts und bietet Ihnen nahezu die gleiche Leistung. Wir haben diese Funktionalität getestet. Dies ist eine intelligente Funktion für NET Core-Projekte, die die Kompilierungszeit verkürzt. Die mehrstufige Kompilierung verlangsamt die Arbeit Ihrer Anwendung geringfügig. Ich empfehle nicht, sie auf einem Produktionsserver zu installieren, aber zum Debuggen gibt es mehr als eine tatsächliche Funktion, die Programmierern Zeit spart.
Fazit
Microsoft versucht, das Leben der Entwickler der .NET-Plattform zu verbessern. Alle oben genannten „Goodies“, die in unserem Unternehmen aufgetaucht sind, ermöglichen es uns, die Umgebung offener und erweiterbarer zu gestalten. Ich hoffe du schätzt es. Haben Sie keine Angst, zu einem neuen Technologie-Stack zu wechseln und andere Funktionen zu verwenden.
Vielen Dank für Ihre Aufmerksamkeit. Ich hoffe es hat euch gefallen.