-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.net总结.txt
executable file
·21 lines (21 loc) · 2.94 KB
/
.net总结.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cli针对的是CIL中间语言,定义了IL的运行环境,主要定义了如何加载类,如何编译,如何进行垃圾回收。也就是类加载器,编译器,垃圾回收器。
.net框架建立在cli标准之上,由一个虚拟系统以及一个系统类库构成。.netframework, mono莫不如此
理论上来说,框架是可以跨任何平台的,取决于对于即时编译器的实现。 所有符合标准的语言都会被编译成IL中间语言, CLI的即时编译器再负责将中间语言编译成机器码。
但是.netframework的即时编译器只针对windows系统实现了机器码编译,也就是说.netframework只能在windows上跨语言,而mono则针对了多系统实现了机器码编译,也就是真正的跨平台。
不过毕竟专精于广,.netframework在windows上面的实现还是比mono要强的,如果目标平台只是针对windows,那么.netframework就是最佳的选择了,如果目标平台为多系统,毋庸置疑,需要采用mono了。
.netframework由clr和fcl构成。也就是公共语言运行时和框架类库构成 - 一个虚拟系统以及一个系统类库。
整个过程可以分为两步,第一步是由各语言至IL,第二步是由IL至机器码。cli定义的就是IL至机器码的过程,IL如何加载,编译成机器码,运行机器码,以及回收垃圾。
而第一步则由一个叫CTS的来规定,公共类型系统,是针对IL定义的,IL所具有的类型以及特性。所有语言都必须实现自身类型与CTS类型的映射,还有所支持的特性与CTS特性的映射。
毫无疑问,IL所具有的功能是最全面最强大的,但是每种语言支持的类型以及特性可能又各有不同。
为了实现各语言之间的互操作,又定义了一个cts的子集,cls,公共语言规范,所有想要实现各语言互操作的语言都必须实现该子集,代码中通过CLSCompliant属性来告知编译器该类需要检查兼容性,是否符合cls。
.net框架把一些必要的类型以及功能封装成一个基础类型 - BCL, 基础类库中包含了文件操作,同步异步,应用程序域等基本功能, 在一个.net程序运行时,基础类库是一定会被加载进去的。
基础类库是框架类库的一个子集,框架类库的其他内容则是基于基础类库的扩充了,提供更多的开发框架,使得开发过程更方便,更快捷,比如winform, asp.net, webservice, mvc等等框架。
.netframework发展轨迹:
.netframework1.0 C#诞生
.netframework2.0 新增泛型,ADO.NET, ASP.NET,序列化和反序列化,
.netframework3.0 WCF WPF WF
.netframework3.5 ajax, linq,hashset<t>,
.netframework3.5sp1 Dynamic MVC
.netframework4.0 WPF WF 协変和逆变
事件是对委托的封装,添加了add和remove访问器
装箱和拆箱就是值类型和引用类型之间的转换,内容复制到内存中,然后添加上引用类型所必需的两块东西:引用地址和同步块索引