一、.NET framwork - windows上的多语言的编程平台
.NET framwork是一种采用系统虚拟机运行的编程平台。以通用语言库(CLR)为基础,支持多种语言(C#,Python,C++等)的开发。.NET framwork给所有语言都提供了基础类库(BCL)
.NET也为应用程序接口API 提供了新功能和开发工具。
这些革新使得程序员可以同时进行windows应用软件(APP)和网络应用软件(WEB)以及组件和服务的开发。
.NET framework:
.net framwork 主要包含两部分:BCL和CLR。
BCL:basic class libraries,基础类库,包括各种基础变量类型,XML类,集合类等等
CLR:公共语言运行时,管理内存,安全机制。主要负责管理用.NET开发的所有应用程序的运行
运行过程:
- 通过编译器产生程序集
- 在CLR(Common Language Runtime公共语言运行库)环境里经过JIT编译器解析
- 产生本机代码(所在系统可以直接识别运行的代码)
- 与操作系统进行交互
整个通路
C# -- 程序集(CIL)-- (JIT)本机代码-系统运行库 -- 管理.NET CLR -- 管理本机代码
1.编译 CIL和JIT
编译使用.NET framework的代码库时,先把代码编译成通用公共语言(CIL-common intermediate library)代码,这些代码不用于任何一种操作系统。
然后编译器把CIL编译成专业os和目标机器结构的本级代码(just in time)
2.程序集
组成部分有CIL,元数据,资源集等
3.托管代码
由CLR管理的代码
托管代码与非托管代码
托管代码是.NET框架编写的代码,需要在CLR的环境下运行,也就是需要依赖.NET的framwork 进行内存管理,安全机制,他们只用管理上层(wpf就只处理表示层)代码。
非托管代码不在CLR控制之下,比如Win32 C/C++ DLL,COM组件,称为非托管代码,他们自己完成内存释放、内存管理,安全周期等。自己与底层api打交道。
4.垃圾回收
托管代码最重要的一个功能
二、 .NET -跨平台的编程平台
.NET 是.NET framework的升级版本,主要用于跨平台开发(windows,linux,等)应用
.net framword->.net core->.net
所以有些内容,在.NET 上适用,在.NET framework上不一定适用,编译会报错
三、C#
C#是创建要运行在.NET CLR 上的应用程序的语言之一。
由C++,C演化而来。是microsoft 专门为.NET平台而创建的。