.NET Core - Codeausführung
In diesem Kapitel werden wir den Ausführungsprozess von .NET Core verstehen und ihn mit .NET Framework vergleichen. Der verwaltete Ausführungsprozess umfasst die folgenden Schritte.
- Compiler auswählen
- Kompilieren Sie Ihren Code in MSIL
- Kompilieren von MSIL zu nativem Code
- Code ausführen
Compiler auswählen
Es handelt sich um eine mehrsprachige Ausführungsumgebung. Die Laufzeit unterstützt eine Vielzahl von Datentypen und Sprachfunktionen.
Um die Vorteile der Common Language Runtime zu nutzen, müssen Sie einen oder mehrere Sprachcompiler verwenden, die auf die Laufzeit abzielen.
Kompilieren Sie Ihren Code in MSIL
Durch das Kompilieren wird Ihr Quellcode in Microsoft Intermediate Language (MSIL) übersetzt und die erforderlichen Metadaten generiert.
Metadaten beschreiben die Typen in Ihrem Code, einschließlich der Definition jedes Typs, der Signaturen der Mitglieder jedes Typs, der Mitglieder, auf die Ihr Code verweist, und anderer Daten, die die Laufzeit zur Ausführungszeit verwendet.
Die Laufzeit sucht und extrahiert die Metadaten aus der Datei sowie aus Framework-Klassenbibliotheken (FCL) nach Bedarf während der Ausführung.
Kompilieren von MSIL zu nativem Code
Zur Ausführungszeit übersetzt ein Just-in-Time-Compiler (JIT) die MSIL in nativen Code.
Während dieser Kompilierung muss der Code einen Überprüfungsprozess bestehen, der die MSIL und die Metadaten untersucht, um herauszufinden, ob der Code als typsicher bestimmt werden kann.
Code ausführen
Die Common Language Runtime bietet die Infrastruktur, die die Ausführung ermöglicht, und Dienste, die während der Ausführung verwendet werden können.
Während der Ausführung erhält verwalteter Code Dienste wie Speicherbereinigung, Sicherheit, Interoperabilität mit nicht verwaltetem Code, Unterstützung für sprachübergreifendes Debuggen sowie erweiterte Unterstützung für Bereitstellung und Versionierung.
.NET Core Code-Ausführungsprozess
Lassen Sie uns nun beschreiben, wie Code mit .NET Core im Vergleich zu .NET Framework ausgeführt wird. In .NET Core gibt es viele Ersetzungen dieser Komponenten, die Teil von .NET Framework sind.
In .NET Core haben wir jetzt eine neue Reihe von Compilern, wie wir Roslyn für C # und VB haben.
Sie können auch den neuen F # 4.1-Compiler verwenden, wenn Sie F # mit .NET Core verwenden möchten.
Tatsächlich sind diese Tools unterschiedlich und wir können Roslyn auch mit .NET Framework verwenden, wenn wir C # 6 oder höher verwenden, da der C # -Compiler nur bis zu C # 5 unterstützen kann.
In .NET Core haben wir keine Framework Class Libraries (FCL), daher werden andere Bibliotheken verwendet und wir haben jetzt CoreFx.
CoreFx ist die Neuimplementierung der Klassenbibliotheken für .NET Core.
Wir haben auch eine neue Laufzeit mit .NET Core, bekannt als CoreCLR, und nutzen einen JIT-Compiler.
Die Frage ist nun, warum wir all diese Komponenten, die wir bereits in .NET Framework haben, erneut implementieren.
Die Antwort ist also dieselbe wie die, warum Microsoft .NET Core implementiert hat.