在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
asp.net 5是下一代的asp.net,该版本进行了全部重写以适用于跨平台,新新版本中,微软引入了如下工具与命令:DNVM、DNX、DNU。 DNVM(.NET Version Manager):由于要实现跨平台的目录,微软提供了DNVM功能,DNVM是ASP.NET最底层的内容,他是一组Powershell脚本,用于启动指定版本的ASP.NET运行环境,并且可以在同一台机器的同一时间点上通过使用Nuget工具来管理各种版本的ASP.NET运行环境(DNX),以及进行相应的升级操作。 DNX(.NET Execution Environment):DNX是ASP.NET程序的运行环境,用于启动并运行ASP.NET程序。该运行环境包括了编译系统、SDK工具集、Native CLR宿主环境。可以使用DNVM管理各种版本的DNX,如 dnx.exe:dnx.exe是用于启动自宿主环境(Self-Hosting)的命令行工具,在使用命令行代码进行自宿主环境启动程序时,dnx负责查找并调用CLR Native Host,dnx命令是整个运行环境的入口点,你可以使用 dnu(DNX Utility):是一个命令行的包管理器,包含在DNX内,所以只要安装了DNX,就可以使用dnu命令, 其可以用于恢复程序包、安装程序包、部署程序包等等,比如把project.json里自定义的程序集自动下载下来进行使用。 DNX架构及运行原理 DNX是ASP.NET程序运行的核心,其遵循如下两个准则: DNX应该是自包含的,DNX在解析完应用程序依赖树以后才能知道要使用哪个Core CLR包,所以在得到解析树之前,DNX是无法加载任何CLR的,但Roslyn编译器除外。依赖注入(Dependency Injection,简称DI)贯穿着整个系统栈,DI是DNX的一个核心部分,所有DNX上的类库都构建在DI之上。 DNX执行环境的分层架构如下: Layer 0:Native Process 该层的功能非常简单,主要就是用于查找并调用 DNX用法: dnx.exe --lib {paths} --appbase {path} [ProgramName] --lib {paths}:程序集dll的保存地址(一般是引用的第三方程序集和项目预编译程序集),该地址是Layer 2层的托管代码入口点可以加载程序集的地方。 --appbase {path}:程序保存的目录,默认为%CD%。 [ProgramName]:程序名称,该程序所在的程序集(或者是含有 Layer 1 : CLR Native Host 这一层的内容依赖于你所选择呢CLR版本,该层有如下两个职责: 启动CLR,启动哪个CLR取决于你选择的CLR版本。如果是 Layer 2:Managed Entry Point Layer 2层(托管代码入口)是编写托管代码的第一层,其职责如下: 创建 Layer 3:Application host/Application 如果开发人员将整个程序编译成程序集放在 不过,一般其它情况下,都会使用一个应用程序宿主( 解析 Layer 4:Application 这一层,就是开发人员开发的程序,其运行在应用程序宿主之上。 环境配置: 要对ASP.NET 5程序的运行环境DNX进行配置,首先需要安装并配置DNVM,不同的操作系统安装DNVM的时候不太一样,我们在这里大概讲解一下。 Windows安装命令: //需要安装powershell 3.0 @powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/master/dnvminstall.ps1'))" Linux: curl -sSL https://raw.githubusercontent.com/aspnet/Home/master/dnvminstall.sh | sh && source ~/.dnx/dnvm/dnvm.sh Mac OS X: brew install dnvm 该命令将会自动从 source dnvm.sh 上述DNVM安装以后,系统会将dnvm文件复制到 dnvm upgrade [-x86][-x64] [-svr50][-svrc50] [-g|-global] [-proxy <ADDRESS>] 1.从feed源安装最新版的DNX dnvm install <semver>|<alias>|<nupkg>|latest [-x86][-x64] [-svr50][-svrc50] [-a|-alias <alias>] [-g|-global] [-f|-force] 1.| 从feed源安装指定的DNX dnvm use <semver>|<alias>|none [-x86][-x64] [-svr50][-svrc50] [-p|-persistent] [-g|-global] 1.| 将DNX bin添加到当前命令行的path环境变量中 dnvm list //列出所有已安装的DNX版本 dnvm alias //列出所有定义了别名的DNX版本 dnvm alias <alias> // 显示定义了别名的DNX名称 dnvm alias <alias> <semver> [-x86][-x64] [-svr50][-svrc50] //给指定的DNX版本设置别名 管理程序集的dnu命令和feed源配置 通过dnu命令进行包管理的时候,通常使用如下命令:
output/ output/packages outpot/appName output/commandName.cmd 1. 由于dnu在内部使用了Nuget命令,进行程序包的管理,所以使用的时候要正确配置Nuget的feed源,目前ASP.NET 5相关的包都在myget feed上,所以我们需要添加这个feed才能正常运行。这些配置信息在Windows下的 <?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/api/v2/" /> <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> </packageSources> <disabledPackageSources /> <activePackageSource> <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> </activePackageSource> </configuration> 在VS2015下,则可以直接通过Tools--> Options--> Nuget Package Manager--> Package Sources来设置,示例如下图: 另外需要注意一下,上述feed的地址是asp.net5的每日构建版本,如果你想使用稳定的里程碑版(如1.0.0_alpha4),则需要使用如下地址 Web Server支持 微软在实现DNX的时候提供了几种Web服务器支持,具体分别如下: Microsoft.AspNet.Loader.IIS (Helios) 该服务器用于在IIS上加载ASP.NET5程序,以便和IIS进程集成,同时绕过了 Microsoft.AspNet.Server.WebListener (WebListener) 该服务器通过 Microsoft.AspNet.Server.Kestrel (Kestrel) 该服务器通过 参考内容 https://github.com/aspnet/Home/wiki/DNX-structure |
请发表评论