C#_02.10_基础一_.NET框架
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框架的更多相关文章
- C#_02.16_基础七_.NET表达式&运算符
C#_02.16_基础七_.NET表达式&运算符 一.字面量: 字面量和变量的关系来理解字面量会比较简单: 因此字面量是源代码中键入已知的(我们知道它是多少的)值.也可以理解是等号右边的非创建 ...
- C#_02.15_基础六_.NET类
C#_02.15_基础六_.NET类 一.类继承是一个类在另一个类的基础上进行的扩展. 继承的子类拥有父类的全部成员.索引子类拥有本身的全部成员以及父类的全部成员. 可以对基类成员进行隐藏,如果必须的 ...
- C#_02.14_基础五_.NET类
C#_02.14_基础五_.NET类 一.类实例: 我们前面说过类是一个模板,我们通过类创建一个又一个的实例,通常情况下类当中的变量是每一个实例都各有一份的,互相不影响,而静态字段是除外的,静态字段是 ...
- C#_02.13_基础四_.NET方法
C#_02.13_基础四_.NET方法 一.方法概述: 方法是一块具有名称的代码.可以通过方法进行调用而在别的地方执行,也可以把数据传入方法并接受数据输出. 二.方法的结构: 方法头 AND 方法 ...
- C#_02.13_基础三_.NET类基础
C#_02.13_基础三_.NET类基础 一.类概述: 类是一个能存储数据和功能并执行代码的数据结构,包含数据成员和函数成员.(有什么和能够干什么) 运行中的程序是一组相互作用的对象的集合. 二.为类 ...
- C#_02.12_基础二_.NET类型存储和变量
C#_02.12_基础二_.NET类型存储和变量 一.核心一句:C#程序是一组类型声明(留待后面慢慢体会,现在不是很理解,不强说了) 二.数据类型: 1.预定义了16种数据类型: 其中13种简单数据类 ...
- Yaf零基础学习总结2-Yaf框架的安装
接着上一篇文章<Yaf零基础学习总结1-Yaf框架简介>我们对Yaf框架有那么一个大概的了解了,但是对于程序员来说,那些文字都是表面的,他们最想的就是开始敲代码了.当然这也是学习Yaf框架 ...
- .Net基础体系和跨框架开发普及
.net体系经过十几年发展,发生了很多变化.特别是在最近两年,随着开源和跨平台的发展,衍生出很多概念,像标准库,可移植库,.Net Core等,相信有不少同学对他们之间的关系是有一些困惑的,这里我从基 ...
- Android系统--输入系统(十二)Dispatch线程_总体框架
Android系统--输入系统(十二)Dispatch线程_总体框架 1. Dispatch线程框架 我们知道Dispatch线程是分发之意,那么便可以引入两个问题:1. 发什么;2. 发给谁.这两个 ...
随机推荐
- MVC异常处理(异常捕获)
1.cshtml页面异常 2.Controller异常 3.路由参数异常. 4.页面不存在404 页面不存在404,可以通过配置config来处理 <customErrors mode=&quo ...
- [转] node升级到8.0.0在vscode启动js执行文件报错
由于升级node 到 8.0.0 版本 vscode 启动一直报错: `node --debug` and `node --debug-brk` are invalid. Please use `no ...
- [转]Centos 查看端口占用情况和开启端口命令
http://www.cnblogs.com/xqzt/p/4919191.html 1.Centos 查看端口占用 比如查看 80 端口占用情况使用如下命令: lsof -i tcp:80 2.列出 ...
- mysql字符集问题汇总
1.设置mysql字符集:在my.ini中添加以下设置,没有my.ini可以将my_default.ini改成他.character-set-server=utf8[client]loose-defa ...
- mysql特殊使用
1.按照 job 和薪水倒序排序: select ename,job,sal from emp order by job desc,sal desc; 2.substr()截取子串 该函数接收3个参数 ...
- P1233 木棍加工 dp LIS
题目描述 一堆木头棍子共有n根,每根棍子的长度和宽度都是已知的.棍子可以被一台机器一个接一个地加工.机器处理一根棍子之前需要准备时间.准备时间是这样定义的: 第一根棍子的准备时间为1分钟: 如果刚处理 ...
- day11 装饰器---函数的使用方法
这个是一个难点,以后面试会经常出现的,要搞懂! 装饰器升级版,进阶内容1: def outer(flag): def wrapper(func): def inner(*args,**kwargs): ...
- svn图标的含义
http://www.cnblogs.com/genhaosan/articles/5129791.html
- Git submodule 仓库中包含另外的仓库(子仓库)
Git submodule 仓库中包含另外的仓库(子仓库) 添加 submodule 在父仓库 git 目录下: git submodule add ssh://ip/[path]/xxx.git 注 ...
- 在Visual Sutdio 2017中使用boost库
在Visual Sutdio 2017中使用boost库 转载 https://blog.csdn.net/u011054333/article/details/78648294 对C++有一 ...