第02章 ASP.NET 5 :KRE(CLR)-KVM-KPM-K Commands

1.引子

    如题:ASP.NET 5是什么?KRE(CLR)为啥多版本了?KVM是来干神马的?KPM又做什么?K Commands又来晕啥?……哎!其实我也是稀里糊涂的,如有个人之见不对之处,还望你拍拍键盘留言指正!

2.ASP.NET 5

    微软在2013年底接触和支持Xamarin后,这算是开源社区力量和呼声吧!在2014年微软终于决定开展跨平台及开源战略,这才出现了ASP.NET vNext,先从web应用开始,但到底走向如何?到达何种程度?开源简单,一句话的事,跨平台就难办了,这工作量可大着?所以暂且定义宏伟目标,又不确定的方向。所以定义为vNext,下一代(版本)技术。如今眼看下一代web项目也逐渐明确了,就正式命名为ASP.NET 5.

3. KRE

    右键项目属性:

    技术分享

    这是VS创建asp.net 5模板项目,安装的clr及coreclr。

    在References目录:

    技术分享 

    在project.json配置:

    技术分享

    注:如果在此配置去掉asp.net50,那么References下ASP.NET 5.0也会没有,项目属性 KRE列表也没了clr版本了。

    问题来了:aspnet50和aspnetcore50到底啥区别?  KRE为什么是多版本的?

    借鉴田园里的蟋蟀翻译和探讨的《精彩 .NET 2015》中图:

   技术分享

   你可以这样理解

   aspnet50是指.NET Framework4.6,它是完整版的CLR,VS创建项目的默认运行时。提供了整个 API 集,保持了向后兼容性。它不是为跨平台而生的(借用mono也可以),只支持Windows平台;

   aspnetcore50是指.Net Core5,它有多种CoreCLR,它为跨平台而生的。也暂时包含windows版.Net Native(以后或许跨平台不需要mono) ,它是模块化的CLR,具体有哪些类库实现看开源的corefx(https://github.com/dotnet/corefx )。问题来了,它是不是从.NET Framework4.6分离出来的还是完全重写的? 我也求这个问题答案吧

   再引用一个图:

   技术分享

   这个重点明白.NET Core也有BCL就是了,基础架构还是.NET  Framework那一套方案。

   注:这里就不提编译器和编译过程。

   在创建ASP.NET5模板项目后,在操作系统下也会有安装过的CLR:

   技术分享

   aspnet50支持的,而aspnetcore50不一定有,如:

   技术分享

   这也预示着coreclr相比clr不会一股脑地集成在一起,使用时,按需要引用即可,它的体积也小很多。

4.KVM

    既然要做跨平台了,即便vs不能跨平台使用,那至少出一个跨平台编译和管理的工具。这就是KVM的出现,至于为什么叫KVM? 有人猜测因为项目代号叫 Project K。其实这名称并不重要。就KRE称呼很可能改成XRE(dotnetclr)。

   (注:各个平台安装kvm,参见https://github.com/aspnet/home )

    windows DOS(管理员用户)下安装KVM:

  @powershell -NoProfile  -ExecutionPolicy unrestricted -Command "iex ((new-object  net.webclient).DownloadString(‘https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.ps1‘))"

    技术分享

    输入kvm或kvm help查看帮助:

    技术分享

    输入kvm list:

    技术分享

    上面看到默认的clr是 1.0.0-beta3 x86 ,使用kvm use可以设置成其它:

    技术分享

    使用kvm  upgrade升级:

    技术分享

5.KPM

    使用kpm或kpm help查看帮助:

    技术分享

    进入项目根目录,也就是project.json所在路径:

    技术分享

    使用kpm add给project.json添加引用项:

    技术分享

    这时project.json中,就添加了:

    技术分享

    如果想loading下载引用Refereces安装包,就使用kpm restore。

 6.K Commands

    在project.json添加commands的配置:

    技术分享

    执行k ef:

    技术分享

    注:K Commands在vs nuget控制台管理器也可以执行的。

    关于k命令体会,以后的项目中如执行单元测试,EF迁移,基架模板代码生成等再演示!

6.小结

    本章内容就简短了,在此班门弄斧,抱歉了!

   

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。