Ist .NET-Execution-Environment - (DNX) ähnlich zu mono?
Hier ist die Beschreibung der DNX:
Den .NET-Execution-Environment - (DNX) ist ein software-development-kit
(SDK) und runtime-Umgebung, die alles, was Sie brauchen, um zu bauen
und zu laufen .NET-Anwendungen für Windows, Mac und Linux. Dass es eine
host-Prozess -, CLR-hosting-Logik und verwalteten Einstiegspunkt Entdeckung. DNX
gebaut wurde für laufen, cross-Plattform ASP.NET Web-Anwendungen, aber es
ausführen können andere Arten von .NET-Anwendungen, auch, wie cross-Plattform
Konsole-apps.
Ist DNX alternative zu mono? Wenn nicht, was wird dann der Unterschied sein?
- Geneigt zu Stimmen, doppelt: stackoverflow.com/questions/28379462/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mono ist eine open-Source - Entwicklungsplattform. Es ist die Implementierung basiert auf der CLI-Spezifikation, wie die Plattform, die von Microsoft bereitgestellt wird. Es umfasst einen C# - compiler, eine Laufzeitumgebung, ein BCL und etwas, genannt MCL (Mono-Klassenbibliothek, die eine Erweiterungen der BCL). Mono selbst ist lauffähig auf Linux, OSX, BSD und Windows auf unterschiedlichen Architekturen.
DNX ist ein SDK, mit allen bits, die benötigt, um erstellen und ausführen einer Anwendung (einschließlich der benutzerdefinierten Dienstprogramme wie
dnu
die verwendet wird, um zu bauen und Verpacken der app), einschließlich der CLR (derzeit setzt es mit CoreCLR). Diese CoreCLR können auch gewechselt werden, mit Mono -, was bedeutet, es nutzt alle Dienste von der Mono-Laufzeitumgebung, compiler, etc.Mono im Gegensatz zu DNX bietet Ihnen die ganze Plattform (Runtime -, BCL -, JIT, etc). DNX wird an der untersten Ebene als der Native Prozess, der aufgerufen wird, die CoreCLR. DNX verwendet werden würde für Szenarien wie " self-host oder das erstellen und ausführen von der Befehlszeile aus.
Als @xanatos Punkte aus, DNX anstreben zu können, versenden die Laufzeit mit der Anwendung, wo mehrere Laufzeiten werden in der Lage, nebeneinander zu Leben, ohne sich jeder andere.
Vielleicht kann dieses Bild verdeutlichen:
Hier ist die Liste, die DNX können Sie auf Anfang (x86 zeigt zweimal, wie es die Standardeinstellung ist):
Gibt es eine umfangreiche wiki-Seite explaning die DNX-Struktur für mehr. @Wird Punkte aus der ASP.NET docs-Seite als gut.
Update: 25/02/2016
DNX ist jetzt im Ruhestand Gunsten von die .NET CLI-Tools.
Ja, DNX vergleicht ziemlich gut zu Mono ' s mono.exe. Oder für diese Angelegenheit der Laufzeit von anderen VM-Sprachen wie Java (java.exe) oder Python (python.exe). Sie alle lösen, das gleiche Huhn-und-ei-problem, Sie laufen auf Betriebssystemen, die nicht wissen, Bohnen über die VM. Er muß initialisiert werden zunächst der Einstiegspunkt des Programms gespeichert werden muss und die Main () - Methode muss jitted, bevor Sie Ihr Programm starten, läuft.
Einen kleinen Unterschied in der DNX mit diesen anderen VMs ist, dass es hält der CLR und der jitter noch in einer separaten Bibliothek, coreclr.dll. Die anderen sind monolithisch mit all den runtime-support-kompilierter code in einer einzigen exe-Datei. Halten monolithische verbessert die Kaltstart-Leistung. Wahrscheinlich etwas, das geschehen wird mit dnx als auch, wenn CoreCLR stabilisiert und nicht zig verschiedene beta-Versionen.
Dieser ansonsten folgt die Architektur .NET auf Windows, es ist c:\windows\system32\mscoree.dll das startet die CLR. Und die CLR und jitter sind separate DLLs clr.dll und clrjit.dll für .NET 4.x. Mscoree verwendet erheblicher Trickserei und Täuschung zu machen es so Aussehen, wie Sie beginnen können, ein verwaltetes Programm, aus einer einzigen EXE-Datei. Besonders der trick, um erstellen Sie eine 64-bit-Prozess aus einem 32-bit-EXE-Datei ist Heroisch, es patches internen Betriebssystem-loader Strukturen zu schaffen feat. Dies erfordert, dass Windows selbst sich bewusst sein, dass eine EXE enthält verwalteten code. Tricks, die nicht gut übersetzen zu anderen Betriebssystemen wie Linux und OSX so Sie entschieden sich für die konventionelle Art und Weise für CoreCLR.
Update: DNX ist jetzt veraltet und ersetzt durch DOTNET. Ansonsten, ohne ungültig, diese Inhalte zu veröffentlichen, nur einfacher zu bedienen.
DNX im Ruhestand ist, wie er sagte, auf die repo-Website. Es besser zu vergleichen dotnet-cli mit mono. Dotnet cli neues Projekt, und es nicht unterstützt alle .net-Bibliotheken, falls es verfügt über ein eigenes Kern-Bibliotheken, die verschiedene mit .net framework.