.Net Framework 之 框架图
.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 之 框架图的更多相关文章
- Entity Framework 实体框架的形成之旅--Code First的框架设计(5)
在前面几篇介绍了Entity Framework 实体框架的形成过程,整体框架主要是基于Database First的方式构建,也就是利用EDMX文件的映射关系,构建表与表之间的关系,这种模式弹性好, ...
- Foundation和UIKit框架图
学习Foundation和UIKit的时候比较容易忽视的一个问题: 对于一个新的类,知道它的用法和属性方法,但往往忽视了它的继承关系, 了解类的继承关系能帮助加深对其理解. 另外在官方文档中每一个类的 ...
- Spring Framework(框架)整体架构 变迁
Spring Framework(框架)整体架构 2018年04月24日 11:16:41 阅读数:1444 标签: Spring框架架构 更多 个人分类: Spring框架 版权声明:本文为博主 ...
- Robot Framework自动化框架搭建的步骤
我把自己之前搭建Robot Framework自动化测试框架的步骤整理了一下,感兴趣的同学可以参考一下. Robot Framework自动化测试框架+ 可视化编辑工具RIDE+Selenium2 ...
- 【原创】Zend Framework 2框架之MVC
ZendFramework 2框架之MVC 作者:sys(360电商技术组) 1.前言 Zend Framework 2是zend官方推出的php开源框架,基于php5.3.他全然採用面向对象的代码实 ...
- Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计
自动化测试如果需要能高效快速的支撑软件项目的测试,项目的快速迭代以及上线,除了以上我们介绍的需要许多的Lib来支持以及需要高效的去编写自动化测试案例外,还需要一个好的自动化测试框架平台来支撑我们的自动 ...
- Android多媒体框架图
Android多媒体整体架构图 MediaPlayer框架图 Camera框架图 SoundRecorder框架图 VideoCamera框架图 OpenCore与Skia ALSA Audio框架图 ...
- 第三十篇:SOUI模块结构图及SOUI框架图
模块结构图: SOUI框架图:
- css基本知识框架图
css基本知识框架:(一:基本知识缩影.二基本知识框架图) 1.css样式表的基本概念 2.样式表基本类型-----1.内嵌样式 2.内联样式3.链入外部样式表4.导入外部样式 3.样式表配置方法 4 ...
随机推荐
- CodeForces 738D Sea Battle
抽屉原理. 先统计最多有$sum$个船可以放,假设打了$sum-a$枪都没打中$a$个船中的任意一个,那么再打$1$枪必中. #pragma comment(linker, "/STACK: ...
- JavaScript中的Array数组详解
ECMAScript中的数组与其他多数语言中的数组有着相当大的区别,虽然数组都是数据的有序列表,但是与其他语言不同的是,ECMAScript数组的每一项可以保存任何类型的数据.也就是说,可以用数组的第 ...
- Failure INSTALL FAILED DUPLICATE PERMISSION
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha Failure [INSTALL_FAILED_DUPLICATE_PERMISSION ...
- BZOJ 4756 [Usaco2017 Jan]Promotion Counting(线段树合并)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4756 [题目大意] 给出一棵树,对于每个节点,求其子树中比父节点大的点个数 [题解] ...
- 【推导】【构造】Petrozavodsk Summer Training Camp 2015 Day 2: Xudyh (TooSimple) Contest, Saturday, August 22, 2015 Problem G. Travelling Salesman Problem
一个矩阵,每个位置有一个非负整数,一个人从左上走到右下,不能走重复的格子,问得到的最大权值. 当长宽不都为偶数时,必然能走遍所有格子,横着从左到右,从右到左(或是竖着走)走完即可. 当长宽都是偶数时, ...
- 【搜索】bzoj3109 [cqoi2013]新数独
搜索,没什么好说的.要注意读入. Code: #include<cstdio> #include<cstdlib> using namespace std; ][]= {{,, ...
- Objective-c nil, Nil, NULL和NSNull的区别
在OC中可能经常会遇到 nil,Nil,NULL和NSNull,下面分析一下之间的区别: Symbol Value Meaning NULL (void *)0 literal null value ...
- [HNOI/AHOI2017]影魔
[HNOI/AHOI2017]影魔 题目大意: 有一排\(n(n\le2\times10^5)\)个数\(k_{1\sim n}\).对于点对\((i,j)\),若不存在\(k_s(i<s< ...
- [转][Navicat for MySQL系列]Navicat如何使用(二)
上一篇经验已经建立了数据连接,这篇我介绍一下Navicat for MySQL的“增删改查”功能是如何操作的. 工具/原料 Navicat for MySQL 10.1.7 数据库操作(基本) 1 远 ...
- Delphi 中ASSERT用法
http://blog.csdn.net/dongyonggan/article/details/5780979 用法:ASSERT(表达式) 如果为假,ASSERT会产生一个EASSERTIONFA ...