.NET执行环境(DNX)与单声道类似吗?

以下是DNX的说明:

.NET执行环境(DNX)是一个软件开发工具包(SDK)和运行时环境,拥有构建和运行Windows,Mac和Linux的.NET应用程序所需的一切。 它提供主机进程,CLR托管逻辑和管理入口点发现。 DNX是为运行跨平台ASP.NET Web应用程序而构建的,但它也可以运行其他类型的.NET应用程序,例如跨平台控制台应用程序。

DNX是否可以选择单声道? 如果不是,那么会有什么区别?


DNX是否可以选择单声道? 如果不是,那么会有什么区别?

Mono是一个开源的开发平台 。 它的实现基于CLI规范,例如Microsoft提供的平台。 它包括一个C#编译器,一个运行时,一个BCL和一个叫做MCL(Mono Class Library,它是BCL的扩展)。 Mono本身可以在不同的架构上运行在Linux,OSX,BSD和Windows上。

DNX是一个SDK,包含构建和运行应用程序所需的所有位(包括用于构建和打包应用程序的dnu等定制实用程序),包括CLR(目前它使用CoreCLR进行部署)。 这个CoreCLR也可以用Mono进行切换,这意味着它将消耗Mono运行时,编译器等所有服务。

与DNX相比,单声道提供了完整的平台(运行时,BCL,JIT等)。 DNX在最低级别用作调用CoreCLR的本机进程。 DNX将用于诸如自主或建立以及从命令行运行的场景。

正如@xanatos指出的那样,DNX希望能够通过应用程序发布运行时,其中多个运行时可以并排存活而不会相互干扰。

也许这张图片可以澄清:

DNX图

这是DNX可以在最上面运行的列表(x86显示两次,因为它是默认设置):

Active Version           Runtime Architecture Location                           Alias
------ -------           ------- ------------ --------                           -----
  *    1.0.0-beta2-10735 clr     x86          C:Usersvictorhu.dnxruntimes default
       1.0.0-dev         clr     x64          C:Usersvictorhu.dnxruntimes clr-x64-dev
       1.0.0-dev         clr     x86          C:Usersvictorhu.dnxruntimes clr-x86-dev
       1.0.0-dev         coreclr xd64         C:Usersvictorhu.dnxruntimes coreclr-x64-dev
       1.0.0-dev         coreclr x86          C:Usersvictorhu.dnxruntimes coreclr-x86-dev
       1.0.0-dev         mono                 C:Usersvictorhu.dnxruntimes mono-dev

有一个广泛的wiki页面解释DNX结构的更多信息。 @Will也指出了ASP.NET文档页面。

更新:25/02/2016

DNX现在已经停用,并支持.NET CLI Tools。


是的,DNX与Mono的mono.exe比较相当不错。 或者就此而言,诸如Java(java.exe)或Python(python.exe)等其他VM语言的运行时间。 他们都解决了同样的鸡与鸡的问题,他们运行在不了解VM的操作系统上。 它必须首先被初始化,程序的入口点需要被定位,并且在你的程序开始运行之前需要先解析Main()方法。

DNX与这些其他虚拟机的一个小差异是,它将CLR和抖动保持在单独的库coreclr.dll中。 其他的是与所有的运行时支持代码编译成一个单一的exe单片。 保持它的整体性可以提高冷启动性能。 一旦CoreCLR稳定下来并且没有多少不同的beta版本,可能也会发生在dnx上。

这在Windows的.NET架构之后,它是引导CLR的c: windows system32 mscoree.dll。 CLR和抖动是独立的DLL,用于.NET 4.x的clr.dll和clrjit.dll。 Mscoree使用大量的欺骗和欺骗手段,使它看起来像你可以从一个EXE文件启动一个托管的程序。 特别是从32位EXE文件创建64位进程的诀窍是英雄式的,它会修补内部操作系统加载程序结构以实现该功能。 这要求Windows本身意识到EXE包含托管代码。 Trickery不能很好地转换成Linux和OSX等其他操作系统,因此他们决定采用更传统的CoreCLR方式。


更新:DNX现已被弃用,并由DOTNET取代。 否则,不会使此帖内容失效,只是更容易使用。


正如它在回购网站上所说的那样,DNX已经退休。 最好将dotnet cli与单声道进行比较。 Dotnet cli是一个新的项目,它不支持所有.net库的情况下,它拥有与.net框架不同的自己的核心库。

链接地址: http://www.djcxy.com/p/90051.html

上一篇: Is .NET Execution Environment (DNX) similar to mono?

下一篇: Developing C# on Linux