.Net Framework框架图详解

转载自:http://www.cnblogs.com/cs_net/archive/2010/09/15/1826558.html
.Net Framework框架图, 看过很多遍, 直到今天才发现, 其实我一直没太懂. 今天从众多图中抽了3张图来总结下自己对.Net Framework框架的理解.

 

这张图看过很多遍, 一直不知道它用来表征什么. 个人的理解是, 它表明了这么一种编写软件的方式或者说表明了.Net平台下开发软件的思想和规范. 真正的.Net Framework框架只包含两部分, 即公共语言运行时(CLR: Common Language Runtime) 和 框架类库(FCL: Framework Class Library)两部分.

 

可以设想自己是一个软件项目经理, 很不凑巧的是手里面的程序员有精通VB、VC++和C#的程序员各一名, 那么如何来使这些程序员写作开发同一个项目呢? 以往不可能的任务, 在.Net Framework下就成为可能, 并且这些程序员按照自己精通的方式去开发项目:

第一层: 程序员使用自己熟悉的方式去完成各自的模块, 这些模块可能使用不同的开发语言.

 

第二层: 但是采用不同语言开发的话, 又是如何将这些代码整合的呢? 通过公共语言规范(CLS: Common Language Specification)来实现, 公共语言规范从各种编程语言中抽象出公共部分并以Com组件的方式对各种编程语言提供支持. 另外, 通用类型系统(CTS: Common Type System) 也是.Net平台的重要特性之一, 它提供了.Net标准的数据类型和准则集. 严格来讲, CLS是CTS的子集. 不同编程语言的模块, 在这一层通过Com组件转化为CLS所支持的语言, 即微软中间语言MSIL(Microsoft Interspace Language), 而相关数据类型则转化为CTS所使用的类型(如: int转化为System.Int32类型, string转化为System.String类型等).

 

第三层和第四层, 则是.Net最重要的组件, 这些开发组件是程序员需要和能操作的东西, 每一个开发组件都代表一种应用程序的开发方向, 是某类应用程序的框架. 如果说前两层只是不同编程语言如何实现统一的过程的话, 这两层则是利用.Net提供的各种组件, 进行具体的开发过程.

 

第五层和第六层, 才是真正的.Net Framework框架. 之前所做的工作都可以认为是在.Net各种开发组件支持下进行编码的过程. 从这两层开始就是程序员完成编码后的汇总调试和运行阶段. 当程序代码执行生成操作(Build)时, 公共语言运行时(CLR)将会连接框架类库(FCL), 提取需要的类库然后编译成为微软中间语言(MSIL: Microsoft Interspace Language)表示的代码. 其中, 针对API(Windows Application Interface)调用级别的功能均有FCL来完成, 如: 控制台处理、文件处理、数据库处理、网络处理、桌面处理和Web处理等. 而CLR则类似于Java的虚拟机, 用来不同平台的系统下提供运行.Net应用程序的环境. 当然为了维护微软操作系统的市场利益, 微软显然还不愿意让其他系统能够很容易的运行.Net程序, 不过这只是个市场策略问题而不是技术问题. 框架类库FCL中的内容如下图:

 

 

最后当程序运行时, 再由CLR中的JIT(just in time)编译器进行二次编译, 将中间语言编译为机器码并执行程序. 在程序的开发阶段, 代码经过第一次编译(Build操作)并转换为中间语言后便保存起来, 当运行改程序时, 则由JIT负责二次编译. 所以.Net编译结束的.exe文件其实是中间语言表示的代码文件. 当双击程序运行时, 才会经由JIT将中间语言解释为机器码并执行. 执行过程如下图:

 

 

关于C#语言的数据类型, 如下图:

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值