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. MQ消息队列之MSMQ

    主要参考文章: 消息队列(Message Queue)简介及其使用

  2. Windows10上强制Visual Studio以管理员身份运行

    解决办法很简单: 1. 打开VS的安装目录,找到devenv.exe,右键,选择“兼容性疑难解答”. 2. 选择“疑难解答程序” 3. 选择“该程序需要附加权限” 4. 确认用户帐户控制后,点击测试程 ...

  3. linux服务器查看tcp链接shell

    netstat -nt |awk '{++S[$NF]} END {for (a in S ) print a,S[a]}'

  4. SQL Server生成数据库的数据字典存储过程

    use fpErp  --指定要生成数据字典的数据库 go SELECT 表名=case when a.colorder=1 then d.name else '' end, 表说明=case whe ...

  5. 批处理命令调用WINRAR对文件进行压缩

    命令: winrar a 参数  压缩后的文件 压缩源文件 如压缩apk文件,代码如下 echo apk文件不能直接下载,所以压缩apk成rar来下载 d: cd D:\Program Files\W ...

  6. Codeforces 781D Axel and Marston in Bitland 矩阵 bitset

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF781D.html 题目传送门 - CF781D 题意 有一个 n 个点的图,有 m 条有向边,边有两种类型: ...

  7. vue笔记-模板,计算属性,class与style,data属性

    数据和方法 1:只有当实例被创建时 data 中存在的属性才是响应式的,也可以预定义一些空的属性,唯一的意外就是Object.freeze(obj),这会阻止修改现有的属性;也就是说一个数据在放到根实 ...

  8. Rendering React components to the document body

    React一个比较好用的功能是其简单的API,一个组件可以简单到一个return了组件结构的render函数.除了一个简单的函数之外,我们还有了一段有用且可复用的代码片段. 问题 不过有时候可能会受到 ...

  9. Rabbit的机器人-二分答案

    Rabbit的机器人 思路 : 可以 推知 挡板的位置与最后 一步的方向有关 .如果是 R 根据题目要求那么最终结果一定是在>0的位置, 因为按照题意要求的最终不能回到重复走过的位置.所以如果有 ...

  10. Django Simple Captcha插件

    正文开始 先看官方描述 1.安装 打开控制台,输入如下: pip install django-simple-captcha 2.把APP添加到Django项目进入自己的Django项目,在setti ...