C#_02.10_基础一_.NET框架

一、概念:

.NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境

解读:

1、.net框架是一个编程环境,

2、可以进行多语言的开发和执行,

3、它是可以进行编辑和编译的。

二、组成:

.NET框架由三部分组成,分别是:

CLR:公共语言运行库(时);

BCL:基类库;

编程工具;

他们之间的关系如下图:

下面来说说这三个部分各自的功能或者是组成:

CLR:

1.内存管理和垃圾收集;

2.代码安全验证;

3.代码执行、线程管理及异常处理。

编程工具:

集成开发环境(IDE)Visual Studio;

.NET兼容的编译器,可以编译(C#,Visual Basic .NET、F#、IronRuby和托管的C++);

调试器;

网站开发服务器端技术,比如ASP.NET或WCF;

BCL(基类库):

.NET使用的一个大的类库,也可以在我们的程序中使用。

三、重点:.NET为什么是多语言的???????

因为.NET不是直接执行源代码,而是对所有它支持的语言的源代码进行编译成程序集,程序集里面的语言是CIL(公共中间语言)语言,是一种中间语言。这个中间语言在程序被执行时编译成本级代码然后出结果。因为不同语言归一到相同的CIL,所以.NET多语言。

 

一个程序集包括如下项目:

程序的CIL;

程序中使用的类型的元数据;

对其他程序集引用的元数据。

代码的执行过程图解:

注小概念:代码有分为托管代码和非托管代码。托管代码是运行时需要CLR进行管理的,而非托管代码是不需要CLR的,如使用C++写的一些底层。

CLR是.NET框架的核心组件,在操作系统的底层,管理程序的执行,提供的服务包括:

自动垃圾收集;

安全和认证;

通过访问BCL得到广泛的编程功能,包括Web服务和数据服务之类的功能。

具体还是看图解:

注:CLI(公共语言基础结构):

是一组阐述了系统架构、规则和约定的规范

为什么需要它?

因为每一种编程语言都有一组内置的类型,用来表示如整数、浮点数和字符等之类的对象。没有这一套CLI规范不同的编程语言内置的类型不一致,缺乏统一性,难以使用不同语言编写程序及库一起良好协作。

CLI的组成图解:

C#进化之路

C#_02.10_基础一_.NET框架的更多相关文章

  1. C#_02.16_基础七_.NET表达式&运算符

    C#_02.16_基础七_.NET表达式&运算符 一.字面量: 字面量和变量的关系来理解字面量会比较简单: 因此字面量是源代码中键入已知的(我们知道它是多少的)值.也可以理解是等号右边的非创建 ...

  2. C#_02.15_基础六_.NET类

    C#_02.15_基础六_.NET类 一.类继承是一个类在另一个类的基础上进行的扩展. 继承的子类拥有父类的全部成员.索引子类拥有本身的全部成员以及父类的全部成员. 可以对基类成员进行隐藏,如果必须的 ...

  3. C#_02.14_基础五_.NET类

    C#_02.14_基础五_.NET类 一.类实例: 我们前面说过类是一个模板,我们通过类创建一个又一个的实例,通常情况下类当中的变量是每一个实例都各有一份的,互相不影响,而静态字段是除外的,静态字段是 ...

  4. C#_02.13_基础四_.NET方法

    C#_02.13_基础四_.NET方法 一.方法概述: 方法是一块具有名称的代码.可以通过方法进行调用而在别的地方执行,也可以把数据传入方法并接受数据输出. 二.方法的结构: 方法头  AND  方法 ...

  5. C#_02.13_基础三_.NET类基础

    C#_02.13_基础三_.NET类基础 一.类概述: 类是一个能存储数据和功能并执行代码的数据结构,包含数据成员和函数成员.(有什么和能够干什么) 运行中的程序是一组相互作用的对象的集合. 二.为类 ...

  6. C#_02.12_基础二_.NET类型存储和变量

    C#_02.12_基础二_.NET类型存储和变量 一.核心一句:C#程序是一组类型声明(留待后面慢慢体会,现在不是很理解,不强说了) 二.数据类型: 1.预定义了16种数据类型: 其中13种简单数据类 ...

  7. Yaf零基础学习总结2-Yaf框架的安装

    接着上一篇文章<Yaf零基础学习总结1-Yaf框架简介>我们对Yaf框架有那么一个大概的了解了,但是对于程序员来说,那些文字都是表面的,他们最想的就是开始敲代码了.当然这也是学习Yaf框架 ...

  8. .Net基础体系和跨框架开发普及

    .net体系经过十几年发展,发生了很多变化.特别是在最近两年,随着开源和跨平台的发展,衍生出很多概念,像标准库,可移植库,.Net Core等,相信有不少同学对他们之间的关系是有一些困惑的,这里我从基 ...

  9. Android系统--输入系统(十二)Dispatch线程_总体框架

    Android系统--输入系统(十二)Dispatch线程_总体框架 1. Dispatch线程框架 我们知道Dispatch线程是分发之意,那么便可以引入两个问题:1. 发什么;2. 发给谁.这两个 ...

随机推荐

  1. 山寨版 WP8.1 Cortana 启动 PC

    8.1 dev preview 发布以来 Cortana 很受关注 前一段看到有视频演示用 Cortana 来启动 PC 看视频也是启动第三方应用实现的,简单来弄其实就是个语音启动应用 + 网络唤醒么 ...

  2. [转] 安装npm全局包提示权限不够

    方法1 sudo npm i -g npm 方法2 修改usr/local的权限.使用sudo有一个风险是安装包可能会运行自己的一些脚本,使sudo操作变的不可控,不安全.可以通过将/usr/loca ...

  3. pp 总结二

    1. return false   ES6函数的扩展:箭头函数  数组 arr.map()   arr.filter() <!DOCTYPE html> <html lang=&qu ...

  4. 关于sql和MySQL的语句执行顺序

    sql和mysql执行顺序,发现内部机制是一样的.最大区别是在别名的引用上. 一.sql执行顺序 (1) from (3) join (2) on (4) where (5) group by(开始使 ...

  5. fatal error c1001 编译器中发生内部错误 OpenMesh6.3

    Internal Compiler Error VS 2015 Update1 VS2015 Update1 编译OpenMesh的额代码时发生错误 fatal error c1001 编译器中发生内 ...

  6. 最长k可重区间集问题&&最长k可重线段集问题

    题解: 洛谷上这两题的题意都是有问题的 按照标程题意不应该是开区间而是左开右闭区间 然后连边比较巧妙 我们可以看成选k条不相交的路径,其中i-i+1中有k条边 所以建图i-i+1流量为k,权值为0 l ...

  7. 2018软工实践作业八之UML设计

    1. 团队信息 队名:小白吃队 成员: 后敬甲 031602409 卢泽明 031602328 蔡文斌 031602301 葛亮 031602617 刘浩 031602423 黄泽 031602317 ...

  8. 网页前端 html js 相关

    1.注释 1.1HTML 注释 http://www.w3school.com.cn/html/html_comments.asp 注释标签 <!-- 与 --> 用于在 HTML 插入注 ...

  9. [转]JAVA实现SFTP实例

    http://www.cnblogs.com/chen1987lei/archive/2010/11/26/1888384.html 最近写的一个JAVA实现SFTP的实例: /** Created ...

  10. Neo4j导入本地csv问题

    把要导入的文件放到D盘,LOAD CSV WITH HEADERS FROM "file:///D:/xx.csv" AS line create (:node); 总提示输入错误