.Net 平台组成
- 编程语言(如C#,VB…)
- CLS(Common Language Specification )公共语言规范
- FCL (Framework Class Library) 各种类库
- CLR (Common Language Runtime) 公共语言运行时
- 操作系统 (Windows + Com + Service)
可以这样简单的去理解:
用户用不同的编程语言在windows操作系统上按照规范进行编程,使用框架类库进行开发,编译,最终运行在OS上。
.Net Framework 组成
FCL
微软提供给开发者们的各种类库。
- BCL (Basic Class Library ) 基础类库
- Ado.Net,IO,XML…
- Winforms
- WPF
- Web (WebForm,MVC…)
- …
CLR
主要由CTS(Common Type System 通用类型系统)和CLS(Common Language Specification 公共语言规范)构成。
- CTS: .Net 平台支持的不同编程语言,内置的数据类型的表现形式都是不一样的,但是没有关系,它们最终都会转换成通用类型,比如C#的int,实际对应通用类型的Int32。
- CLR:多种语言在同一个平台上需要遵守的规范,求同存异
这边简单说下C#变成机器码(电脑能直接识别的,0101这种)的过程
C#语言编译后生成dll(存储着metadata,il),用户运行程序时CLR中的JIT(Just In Time)即时编译器,将编译生成的IL(Inner Language)变成机器码。这样就可以做到不会编译一下,就全部转换为机器码,程序运行到某一块,才会转换,已经转换成机器码的,JIT就不会再进行转换,这样效率就比较高。
从而做到一次编译,多次运行