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. 发给谁.这两个 ...
随机推荐
- [转] meta标签的作用及整理
meta的标签的使用是我在前端学习中曾经困惑过一段时间的问题.一方面不是很了解meta标签的用途,另一方面是对于meta标签里的属性和值不是懂,也不知道从哪里冒出来的,所以这篇文章专门整理下meta标 ...
- POJ 1364 / HDU 3666 【差分约束-SPFA】
POJ 1364 题解:最短路式子:d[v]<=d[u]+w 式子1:sum[a+b+1]−sum[a]>c — sum[a]<=sum[a+b+1]−c−1 ...
- nginx 限制并发访问及请求频率
0. 1.参考 [工作]Nginx限制IP并发连接数和请求数的研究 Module ngx_http_limit_conn_module Module ngx_http_limit_req_module ...
- Ubuntu下使用Evernote
Ubuntu下安装使用Evernote http://blog.csdn.net/yangzhuoluo/article/details/8118996 http://blog.csdn.net/ya ...
- Python_list部分功能介绍
x.append():在列表尾部添加一个元素 x.clear():把列表清空 x.count():判断某个元素出现的次数 x.extend():合并两个列表,或者一个元组 x.index():获取元素 ...
- Codeforces 1139E Maximize Mex 二分图匹配
Maximize Mex 离线之后把删数变成加数, 然后一边跑匈牙利一遍算答案. #include<bits/stdc++.h> #define LL long long #define ...
- Cookies 和 Session的区别
1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据. 2.session其实指的就是访问者从到达某个特定主页到离开为止的那段时间. ...
- 使用 PySide2 开发 Maya 插件系列一:QT Designer 设计GUI, pyside-uic 把 .ui 文件转为 .py 文件
使用 PySide2 开发 Maya 插件系列一:QT Designer 设计GUI, pyside-uic 把 .ui 文件转为 .py 文件 前期准备: 安装 python:https://www ...
- oracle获取某个月份的最后一天
select last_day(to_date('1992-10','yyyy-mm')) from dual; 输出:1992/10/31
- 一、网络编程-UDP传输协议及socket套接字使用
知识点基本介绍:1.网络通信协议一般就是UDP和TCP俩种传输协议,这一章先说UDP,UDP是一种比较简单的传输协议,如qq使用的就是UDP 2.ip:ip就是标记网络中中的一台电脑 ...