Lession01 深入了解.NET框架

.Net FrameWork框架

比如:我们要做一道道精美的菜,厨房相当于我们的.Net平台,而柴米油盐酱醋茶、做饭的原料,做饭的工具等等就是我们的.Net FrameWork框架,.Net FrameWork框架是包含在.Net平台的

再比如: .Net平台——>中国移动互联网平台
我们的手机想要上网,发短信,打电话等等,想要实现,就要基于中国移动互联网平台,我们在这个平台下,可以自由的使用手机的各个功能
中国移动互联网平台它要正常的运行离不开在全世界放的信号塔,这个信号塔,提供了一个稳定的环境来保证我们中国移动互联网平台能够正常的运转,这个信号塔就类似我们的.Net FrameWork框架

总结:.Net FrameWork框架是.Net平台中不可缺少的一部分,它提供了一个稳定的运行环境来保证我们基于.Net平台开发的各种应用能够正常的运转。它里面就包含了(CLR, .Net类库)

CLR、CTS、CLS、IL、JIT这堆名词究竟是啥

什么是CLR?

CLR,公共语言运行时(Common Language Runtime)是一个由多种语言使用的“运行时”。他的核心功能包括(内存管理、程序集加载、安全性、异常处理和线程同步),能够被面向CLR的全部语言使用。这里的“运行时”,就是一个运行时环境,就像JAVA虚拟机同样。哦,错了,确切的说是JRE(Java Runtime Enviromental)

什么是CTS?

规范.NET中数据的类型。
CLR是彻底围绕类型展开的,经过类型,经过一种编程语言写的代码能够与另外一种语言写的代码沟通。因此Microsoft制定了一个正式的规范,“通用类型系统”(Common Type System,CTS),它描述了类型的定义和行为。上面已经提到,Microsoft已经将CTS和,NET Framework的其余组件 -- 包括(文件格式、元数字、中间语言及对底层平台的)提交给ECMA完成标准化工做,最终造成的标准称为“公共语言基础结构”(Common Language Infrastructure)。

什么是CLS?

描述多语言之间进行交互的语言规范,.NET系统包括的语言有C#、C++、VB、J#,它们都遵照通用语言规范。
CLR中集成了多种语言,一种语言中能够调用另外一种语言建立的对象。为了实现这一目的,微软定义了一个公共语言规范(Common Language Specification)。它详细定义了一个最小的功能集。任何编译器若是想生成类型兼容于其余“符合CLS,面向CLR语言”生成的组件,那么必需要支持这个最小功能集。

什么是IL?

中间语言
IL是与CPU无关的机器语言,比大多数的CPU机器语言都要高级。能访问操做对象类型、建立及初始化对象、调用对象上的虚方法,直接操做数组元素,甚至能抛出和捕捉异常处理,能够说是一种面向对象的机器语言。CRL之所以不关心语言,是因为每种语言的编译器最终将语言编译成了统一的中间语言(IL),正是由于IL的存在,.net框架才实现了所谓的跨语言

什么是JIT?

just in time, 即时编译。在CLR中,把IL转换成机器代码的工作交给了JIT编译器。即时编译只在方法第一次被调用时发生。
CLR执行托管模块,必需要将IL代码编译成本地CPU指令。这个事情由JIT(just in time)来执行。IL语言本身并不能直接被CPU执行,它需要被CLR的JIT编辑器转换成本机CPU指令,进而最终将程序代码运行起来

C#/.NET编译原理和跨平台特性

任何编程语言要被计算机理解,都需要转化成机器码才行,而转化的过程分为两种主要的形式,即编译解释
编译(compile)是将一种语言转换为另一种语言的动作,而一般来说,"另一种语言”通常是机器码(machine code/native code),即全部由 0 和 1 组成的语言,或者某种公共语言,当然机器码可以看作所有语言的目标公共语言。
使用编译器读入一 个文件,将会产出一个由目标语言写成的另一个文件,例如,C# 编译器会产出扩展名为 exe 或 dll 的文件,目标语言是 IL。
而相对的,解释(interpret)虽然也会将代码翻译为机器码,但是,却不会产生目标文件。因此,每次运行解释型语言时,都需要重新进行解释。
不太准确地讲,编译可以类比为做好一桌菜才开吃,而解释可以类比为吃火锅,边涮边吃。

.NET 框架语言是通过两步编译变成机器码的,如下图所示。


4-1Z409151IW37.gif

第一步编译使用 .NET 自带的编译器(例如 C# 会使用 csc.exe)并生成 IL 语言,它是一个基于栈的、面向对象的高级语言。

显然,高级语言是无法被机器直接执行的,在运行时(runtime), CLR 使用 JIT 来将 IL 转换为机器码,所以,CLR 是 .NET Framework 最重要的组件,没有之一。
在第二步将 IL 或字节码转化为机器码时,会使用对应机器的解释器来执行。
在解释器执行时,会采用即时编译的形式(一句句编译源代码,但是会将翻译过的代码缓存起来以降低性能损耗),因此,它的性能比普通的解释型语言(没有缓存功能)要快。
不过,运行完毕,程序退出之后,缓存的内容就消失了,每次运行时都需要重新编译。
跨平台最常见和最令人熟悉的定义是“一次编译,到处运行”。
这其中,一次编译指的就是第一步编译(转化为中间语言)。
拿到 IL 之后, 通过在特定平台的运行时程序(CLR 和 JRE),解释和编译 IL (即时编译 JIT)为机器码来执行。
而这么做的好处则是,仅需要较少的编译器就可以完成跨平台功能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容