.Net Framework框架图,如下图:

  

   它表明了这么一种编写软件的方式或者说表明了.Net平台下开发软件的思想和规范。

  .Net Framework框架实际只包含两部分:

  1、公共语言运行时(CLR: Common Language Runtime) ;

  2、框架类库(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)表示的代码。

  1、针对API(Windows Application Interface)调用级别的功能均有FCL来完成, 如: 控制台处理、文件处理、数据库处理、网络处理、桌面处理和Web处理等。

  2、CLR则类似于Java的虚拟机, 用来在不同平台的系统下提供运行.Net应用程序的环境。

  当然为了维护微软操作系统的市场利益, 微软显然还不愿意让其他系统能够很容易的运行.Net程序, 不过这只是个市场策略问题而不是技术问题。

  框架类库FCL中的内容如下图:

  

  最后当程序运行时, 再由CLR中的JIT(just in time)编译器进行二次编译, 将中间语言编译为机器码并执行程序。

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

    

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

  

.Net Framework 之 框架图的更多相关文章

  1. Entity Framework 实体框架的形成之旅--Code First的框架设计(5)

    在前面几篇介绍了Entity Framework 实体框架的形成过程,整体框架主要是基于Database First的方式构建,也就是利用EDMX文件的映射关系,构建表与表之间的关系,这种模式弹性好, ...

  2. Foundation和UIKit框架图

    学习Foundation和UIKit的时候比较容易忽视的一个问题: 对于一个新的类,知道它的用法和属性方法,但往往忽视了它的继承关系, 了解类的继承关系能帮助加深对其理解. 另外在官方文档中每一个类的 ...

  3. Spring Framework(框架)整体架构 变迁

    Spring Framework(框架)整体架构 2018年04月24日 11:16:41 阅读数:1444 标签: Spring框架架构 更多 个人分类: Spring框架   版权声明:本文为博主 ...

  4. Robot Framework自动化框架搭建的步骤

    我把自己之前搭建Robot Framework自动化测试框架的步骤整理了一下,感兴趣的同学可以参考一下.   Robot Framework自动化测试框架+ 可视化编辑工具RIDE+Selenium2 ...

  5. 【原创】Zend Framework 2框架之MVC

    ZendFramework 2框架之MVC 作者:sys(360电商技术组) 1.前言 Zend Framework 2是zend官方推出的php开源框架,基于php5.3.他全然採用面向对象的代码实 ...

  6. Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计

    自动化测试如果需要能高效快速的支撑软件项目的测试,项目的快速迭代以及上线,除了以上我们介绍的需要许多的Lib来支持以及需要高效的去编写自动化测试案例外,还需要一个好的自动化测试框架平台来支撑我们的自动 ...

  7. Android多媒体框架图

    Android多媒体整体架构图 MediaPlayer框架图 Camera框架图 SoundRecorder框架图 VideoCamera框架图 OpenCore与Skia ALSA Audio框架图 ...

  8. 第三十篇:SOUI模块结构图及SOUI框架图

    模块结构图: SOUI框架图:

  9. css基本知识框架图

    css基本知识框架:(一:基本知识缩影.二基本知识框架图) 1.css样式表的基本概念 2.样式表基本类型-----1.内嵌样式 2.内联样式3.链入外部样式表4.导入外部样式 3.样式表配置方法 4 ...

随机推荐

  1. sql查询总结

    1.SQL select 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SELECT 列名称 FROM 表名称 实例: SELECT username,pas ...

  2. codis 的dashboard服务无法启动 提示pid已经运行

    ps -rf|grep pid号 ,一直查询不到,进程并没有运行, 后来在Zookeeper中发现get /zk/codis/db_gdata/dashboard 这个中存在着pid,连接到zooke ...

  3. 洛谷P3943星空

    啦啦啦啦——又是五月天的歌,题目传送门 这道题比之前两道真的不是同一级别的,这里我这个蒟蒻也讲不清,不如看下这位大佬的吧,他的写的已经非常清楚了:Z-Y-Y-S,这里我就只放下我的代码,也是按照这位大 ...

  4. 【BZOJ 1027】 (凸包+floyd求最小环)

    [题意] 某公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的原材料中铁铝锡的比重不同.然后,将每种原材料取出一定量,经过融解.混合,得到新的合金.新的合金 ...

  5. BZOJ 2323: [ZJOI2011]细胞

    嗯..csdn发得出markdown了..请移步~ 个人觉得那个帅一点 嗯 好题啊!! 矩乘+DP 蒟蒻的我一开始发现了斐波那契数列之后就不会搞了.. 那个..什么质量相同两种方案相同就是扯淡的..想 ...

  6. 【UOJ #171】【WC 2016】挑战NPC

    http://uoj.ac/problem/171 带花树开花时的u和v一定要记清楚顺序,想好了再写,数据范围也要算好! 对每个筐子拆成3个点,连成一个三元环,对每个(u,v),让u和v的3个点都连边 ...

  7. 【树形dp】Treasure Hunt I

    [ZOJ3626]Treasure Hunt I Time Limit: 2 Seconds      Memory Limit: 65536 KB Akiba is a dangerous coun ...

  8. 交换x,y的三种方式

    1 值传递: #include<iostream> using namespace std; int main(){ void change(int ,int); int x=2,y=3; ...

  9. Problem H: 零起点学算法103——查找最大元素

    #include<stdio.h> #include<string.h> int main() { ]; while(gets(a)!=NULL) { ]; ;a[i]!='\ ...

  10. Google Breakpad 完全解析(二) —— Windows前台实现篇

    原创文章,转载请标明出处:Soul Apogee (http://bigasp.com),谢谢. 好,看完了如何使用breakpad,我们现在看看breakpad在Windows下到底是如何实现的呢? ...