第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.小结

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

时间: 2024-10-10 22:15:32

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

第06章 ASP.NET 5:EntityFramework7

1.前言 上一篇文中扯的是EF6下的实体关系设计及迁移,预留的问题也不再补充了.原因写此系列文章,其初衷是针对ASP.NET 5介绍的,EF6又不支持它的,略过也罢. EF的性能是永远抛不开的话题,园子里的师傅们也一直争论不休.(每次看到此类帖,点击量老高了) 不知道大家是否明白:什么是平台?什么是框架?什么是类库?我在此也可能说的不对,也望你纠正. EF显然不是什么平台,因为不能只依赖它来开发或运行一个什么应用. 哪它是框架吗?说到这,还是得解释一下何谓框架?简单地说它规定或规则好一些架子,你

第02章-VTK安装(2)

[译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934-23-8),由于时间关系,我们不能保证每周都能更新本书内容,但尽量做到一周更新一篇到两篇内容.敬请期待^_^.欢迎转载,另请转载时注明本文出处,谢谢合作!同时,由于译者水平有限,出错之处在所难免,欢迎指出订正!] 2.3Windows XP, Vista及以上版本平台下安装VTK Windows平台下有两种安

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第02章 | 列表和数组

第02章: 列表和数组 ------ 在Python中最基本的数据结构是序列,每个元素分配一个序号,即元素的序号,也即索引.注意,需要从0开始,第一位0,第二位为1,依次类推. Python包括: 字符串,列表,元祖,字典 这四种常用数据结构,或者说四种序列,其中元祖为不可变序列. 列表和元祖的主要区别 列表可变,而元祖不可变             >>>list1 = ['Tom',40] 所以元祖: 主要用于存储不变的数据   >>> >>> t

JavaScript权威指南第02章 词法结构

词法结构 2.1字符集 JavaScript 是Unicode字符集编写,几乎支持地球上所有的语言. 2.1.1区分大小写 javascript是区分大小写的语言. 2.1.2 空格.换行符和格式控制符 javascript会忽略标识之间的空格符.换行符.通过空格和换行可以大大地提高代码的可读性.当需要使用空格和换行符时,使用Unicode的转义来实现. 2.2注释 单行注释     //这里是单行注释 多行注释    /**多行注释 */ 2.3直接量 在程序中能够直接使用的量,比如数字,字符

第02章-VTK安装(1)

[译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934-23-8),由于时间关系,我们不能保证每周都能更新本书内容,但尽量做到一周更新一篇到两篇内容.敬请期待^_^.欢迎转载,另请转载时注明本文出处,谢谢合作!同时,由于译者水平有限,出错之处在所难免,欢迎指出订正!] 这一章将详细介绍安装VTK的步骤.安装过程的难点依赖于若干因素.Windows平台下可先安装二进

《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例

翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章  ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架,它支持3种不同的技术来创建websites(网站)和Web应用:他们分别是,Web Pages,Web Forms,和MVC.虽然MVC是一种非常流行的,有完整的用于软件开发模式理论的技术,但它在ASP.NET中却是一种新的技术. 目前最新的版本是2012年发布的ASP.NET MVC4.自从2008年发布

groovy入门 第02章 数值和表达式

数值和表达式 2.1数值 支持整数和浮点数. 整数是Integer的实例,浮点数是BigDecimal的实例. 2.2表达式 支持加.减.乘.除.求模运算,并且运算符可以被方法代替. 5+3 可以表示为5.plus(3)  ,另外还有minus,multiply,devide,mod运算. 特别需要注意的是,对非整数求模是错误的,比如15/3.0 2.3运算符优先级 运算符的优先级同Java的运算符优先级一致,此处不再赘述. 2.4赋值 在第一次使用某个变量是需要声明,def a 表示声明了该变

ASP.NET vNext总结:KVM

1.前言 本章也算是第一章CLR的KRE和第四章EF的K ef Commands补充,它们用到了KVM.非专业写手写技术文章真的不好完全表达出方方面面. KVM是神马?管它呢?先会下面的介绍再说.其实你也没比要很深入KVM命令有哪些?在VS中基本上有设置方式做了一些,但背后离不开KVM. 在这里非常抱歉说,如题是在介绍KVM,而下面内容我也不能讲清楚它.说实话,写帖子是为了自己学习总结一下,拿出来和大家分享,如果有误导发生,也概不负责,因为我没有收你们的Money.接下来,你能明白项目的编译,发

第16章 ASP.NET MVC 日志篇

本章主要介绍MVC中内置的错误处理.日志以及用来提升性能的监控工具 一.错误处理     当该网站忙于处理HTTP请求时,很多内容都会出错.幸运的是,MVC让错误处理工作变得相对简单了很多,因为MVC应用是运行在MVC框架之上的,所以可以访问底层框架的核心功能,包括自定义错误处理页面及显示错误状态码. 其中处理错误有三种基本的方法: (1)第一种:配置<customErrors/>节点 也是最简单的一种,即启用MVC自定义错误处理特性:就是在web.config文件中配置<customE