C# .NET .NET Framework .NET CORE 等的关系简介
2019新的一年,祝大家新年快乐,工作生活一帆风顺,心想事成!诸事大吉!
这篇文章是我今年的第一篇博客,主题是:C# .NET .NET Framework .NET CORE 等这些名词之间有什么关联关系。
费话不多说,直接进入主题。
.NET的正式诞生:2002年2月13日微软正式推出.NET的开发工具--Visual Studio.NET 2002。
.NET平台结构图:

我们看上图,我们一一来做解释:
硬件设备和操作系统我就不做解释了,这是软件运行的载体或环境,计算机行业的基础。
.NET Framework(以下简称.NET 框架):
.NET Framework是安装和运行在操作系统上的,是.NET最基础的框架,开发.NET应用程序的核心基础。
它提供了创建、部署和运行.NET应用的环境,主要包含三个关键的组成元素:
- CLR:公共语言运行时(Common Language Runtime)
- FCL:框架类库(.NET Framework Class Library)
- DLR:动态语言运行时(Dynamic Language Runtime)
基于.NET框架可以支持多种语言进行开发,如 C#,VB.NET,C++等,也就是我们俗称的跨语言开发
开发和运行一个.NET 应用程序必须安装.NETFramework。
结构图:

……
CLR:公共语言运行时
CLR是.NET框架的基础,它提供了所有.NET应用程序运行时环境,是所有.NET应用程序都要使用的编程基础。
CLR也可以看作是一个在执行时管理代码的代理,管理代码是CLR的基本功能,能够被托管的代码称为托管代码,
反之称为非托管代码。托管代码以“CLR”为目标,非托管代码以“操作系统”为目标

CLR包含三个组成部分:
CLS:公共语言规范(Common Language Specifcation):
是一种最低的语言标准,它制定了一种以.NET平台为目标的语言所必须支持的最小特征,以及该语言与其它.NET语言之间实现互操作所需要的完整特性。
凡是遵守这个标准的语言在.NET框架下都可以实现互相调用。简单说:就是把各种语言转换成统一的语法规范。
CTS:通用类型系统(Common Type System)
解决不同语言数据类型不同的问题,如C#中的整形是int,而VB.net中的整形是Integer,通过CTS我们把它们两个编译成通用的类型Int32。
所有的.NET语言共享这一类型系统,在它们之间实现对接,简单说:就是把各种语言中的不同数据类型,转换成统一的通用的数据类型。
JIT:即时编译器(Just In Time)
将用于转换之后的微软中间语言编译为二进制语言,交给CPU执行
CLR的编译过程:

.NET所有编写的源代码都不被编译成本地代码,而是由各自语言的编译器,编译成微软的中间代码(Microsoft Intermediate Language,MSIL).
中间语言MSIL或IL,再由JIT编译器转换成机器代码(操作系统专用代码)
注:
IL我们通常称之为程序集语言,因为.NET程序集需要由.NET运行时加载才能运行,所以IL代码也叫做托管代码(Managed Code),
它是一种比高级语言低,比机器语言要高的中间语言,基于堆栈,又支持面向对象。
FCL:框架类库:
- 最底层,由BCL的大部分组成,主要作用是对.NET框架、.NET运行时及CIL语言本身进行支持,例如基元类型、集合类型、线程处理、应用程序域、运行时、安全性、互操作等。
- 中间层,包含了对操作系统功能的封装,例如文件系统、网络连接、图形图像、XML操作等。
- 最高层,包含各种类型的应用程序,例如Windows Forms、Asp.NET、WPF、WCF、WF等。
FCL的内容被组织成一个树状的命名空间(Namespace Tree),每个命名空间可以包含许多类型及其它命名空间,
在使用FCL时,我们需要引入其相应的命名空间。

核心命名空间简介:
System:此命名空间包含所有其他的命名空用,在 System命名空间中包含了定义NET中使用的公共数据类美型,如 Boolean,
DateTime和lnt 32等。此命名空间中还有一个非常重要的数据类型" Object", Object类是所有其他NET对象继承的基本类
System Collections. Generic:支持泛型操作,是.NET 2.0新增的内容.
System IO:支持对文件的操作、如复制,粘贴、删除及对文件的读写等
System.Net:支持对网络协议的编程
System.Dat提供对表示 ADO. NET结构的类的访问
System.Windows. Fonns:用于开发 Windows应用程序,引入这个命名空间才能使用 Win forms的控件和各种特性。
System.Drawing:支持GDI+基本图形操作
DLR:动态语言运行时
在NET Framework 4.0中新增了动态语言运行时DLR(Dynamic Language Runtime),相对于CLR微软提供了DLR
用来向CLR中添加了一组专门用于满足动态语言的服务, 借助于DLR,可以开发在.NET Framework 上运行的动态语言,
而且可以使用C#,VB.NET等语言方便地与动态语言交互,目前比较出名的DLR应用有IronPython。
.NET Framework的版本跌代:

该框架在version 6之后从.NET Framework分离出来。
7、Parallel linq
简称并行 LINQ (PLINQ) 是 LINQ to Objects 的并行实现。
PLINQ 将 LINQ 语法的简洁和可靠性与并行编程的强大功能结合在一起。 就像面向任务并行库的代码一样,PLINQ 查询会根据主计算机的能力按比例调整并发程度。
在许多情况下,PLINQ 可通过更有效地使用主计算机上的所有可用内核来显著提高 LINQ to Objects 查询的速度。 这一性能提升使桌面具备高性能计算能力。
8、Task parallel library
简称任务并行库 (TPL) 是 System.Threading 和 System.Threading.Tasks 空间中的一组公共类型和 API。
TPL 的目的是通过简化将并行和并发添加到应用程序的过程来提高开发人员的工作效率。
TPL 动态缩放并发的程度以最有效地使用所有可用的处理器。 此外,TPL 还处理工作分区、ThreadPool 上的线程调度、取消支持、状态管理以及其他低级别的细节操作。
通过使用 TPL,你可以在将精力集中于程序要完成的工作,同时最大程度地提高代码的性能。
9、Modern UI Runtime
简称Modern UI,是一个专注于用户界面设计的框架
10、Task-Based Async Model:基于任务的异步模型
最新版的.Net Framework 4.7主要带来了以下方面的提升:
- 为Win10窗体应用带来了高DPI支持;
- 为Win10上的WPF程序带来了触控支持;
- 增强了加密支持;
- 提升性能和稳定性。
介绍完.NET Framework,再来说说.NET平台最新发布的.NET Core。
结构图如下:
C# .NET .NET Framework .NET CORE 等的关系简介的更多相关文章
- ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First
ASP.NET Core 开发-Entity Framework Core 1.0 Database First,ASP.NET Core 1.0 EF Core操作数据库. Entity Frame ...
- ASP.NET Core 开发 - Entity Framework (EF) Core
EF Core 1.0 Database First http://www.cnblogs.com/linezero/p/EFCoreDBFirst.html ASP.NET Core 开发 - En ...
- .net core .NET Core与.NET Framework、Mono之间的关系
.NET Core与.NET Framework.Mono之间的关系 首先想要知道.NET Core与.NET Framework.Mono之间的关系,就必须他们分别是什么,有什么用途? 一. .ne ...
- Net Framework,Net Core 和 Net Standard 区别
前几天我在一个群里看到有关这方面的讨论,最后感觉讨论的不是很清晰,有幸的是我们的项目去年就开始迁移NetCore的调研了,我个人多多少少也是有过这方面的研究.下面我将说一下我自己对着三个的认识如果有不 ...
- 一张图搞定 .NET Framework, .NET Core 和 .NET Standard 的区别
最近开始研究.NET Core,有张图一看就能明白他们之前的关系. 上图己经能够说明.NET Framework和.NET Core其实是实现了 .NET Standard相关的东西,或者说Frame ...
- Entity Framework (EF) Core学习笔记 1
1. Entity Framework (EF) Core 是轻量化.可扩展.开源和跨平台的数据访问技术,它还是一 种对象关系映射器 (ORM),它使 .NET 开发人员能够使用面向对象的思想处理数据 ...
- Core Animation之框架简介(一)
Core Animation之框架简介(一) 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/11180241 转载请注明 ...
- .NET Core/.NET之Stream简介 Rx.NET 简介
.NET Core/.NET之Stream简介 之前写了一篇C#装饰模式的文章提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容) .NET Core ...
- Spark中Task,Partition,RDD、节点数、Executor数、core数目的关系和Application,Driver,Job,Task,Stage理解
梳理一下Spark中关于并发度涉及的几个概念File,Block,Split,Task,Partition,RDD以及节点数.Executor数.core数目的关系. 输入可能以多个文件的形式存储在H ...
随机推荐
- 环境搭建-ELK单节点环境搭建(02)
写在前面 常说:"工欲善其事必先利其器",这话想想也是一点毛病也没有,在开始学习任何技术之前,我们总得有一个实际可供操作的实验环境.有人说,"看十遍不如用一遍" ...
- SkyWalking系列(一):初探
SkyWalking已经再微服务商城系列里使用了,本篇将介绍如何再Windows系统下安装并简单使用. 1.下载SkyWaling 本篇测试使用6.0版本:http://skywalking.apac ...
- 代理(Proxy)设计模式
目录 概述 静态代理 UML类图 代码实现 代码地址 静态代理的不足 动态代理之jdk实现 UML类图 代码实现 利用JDK实现动态代理的优点 利用JDK实现动态代理的不足 代码地址 动态代理之cgl ...
- python win32com 读取带密码的excel
之前用到的win32com读取带密码excel的相关内容,今天刚好准备整理下,突然发现方法又不灵了. 以下为错误示范: # 已知excel密码去除 def del_password(filename, ...
- Javascript中Promise的简单使用
// 函数功能:1秒以后创建一个10以内的随机整数,并判断这个数是否为偶数:如果是偶数则做一件事情,如果是奇数则做另一件事情 function doSomthing() { var promise = ...
- Java8 Stream性能如何及评测工具推荐
作为技术人员,学习新知识是基本功课.有些知识是不得不学,有些知识是学了之后如虎添翼,Java8的Stream就是兼具两者的知识.不学看不懂,学了写起代码来如虎添翼. 在上篇<Java8 Stre ...
- meta标签中设置以极速模式打开网页
1.网页meta标签中X-UA-Compatible属性的使用的极速模式 <meta http-equiv="X-UA-Compatible" content="I ...
- Java读源码之LockSupport
前言 JDK版本: 1.8 作用 LockSupport类主要提供了park和unpark两个native方法,用于阻塞和唤醒线程.注释中有这么一段: 这个类是为拥有更高级别抽象的并发类服务的,开发中 ...
- vue中图片放大镜功能
仿淘宝详情页图片鼠标移过去可对图片放大显示在右侧 效果图如下图,此功能支持PC端与移动端 接下来进入代码实现环节: 先准备两张图片,一张小图片叫 '土味.jpg',大小160*91:一张大图片叫 ' ...
- 使用物理机安装Linux
现在Linux用的越来越多.之前的使用,要么是云服务器自带的centos 系统环境,只要购买了服务器就可以选择自己想要的系统环境.要么是在Windows中安装虚拟机. 今天,我正式使用公司里闲置 ...