2019新的一年,祝你们新年快乐,工做生活一路顺风,心想事成!诸事大吉!web
这篇文章是我今年的第一篇博客,主题是:C# .NET .NET Framework .NET CORE 等这些名词之间有什么关联关系。编程
费话很少说,直接进入主题。windows
.NET的正式诞生:2002年2月13日微软正式推出.NET的开发工具--Visual Studio.NET 2002。api
.NET平台结构图:安全
咱们看上图,咱们一一来作解释:网络
硬件设备和操做系统我就不作解释了,这是软件运行的载体或环境,计算机行业的基础。并发
.NET Framework(如下简称.NET 框架):app
.NET Framework是安装和运行在操做系统上的,是.NET最基础的框架,开发.NET应用程序的核心基础。框架
它提供了建立、部署和运行.NET应用的环境,主要包含三个关键的组成元素:异步
基于.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:框架类库:
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分离出来。
七、Parallel linq
简称并行 LINQ (PLINQ) 是 LINQ to Objects 的并行实现。
PLINQ 将 LINQ 语法的简洁和可靠性与并行编程的强大功能结合在一块儿。 就像面向任务并行库的代码同样,PLINQ 查询会根据主计算机的能力按比例调整并发程度。
在许多状况下,PLINQ 可经过更有效地使用主计算机上的全部可用内核来显著提升 LINQ to Objects 查询的速度。 这一性能提高使桌面具有高性能计算能力。
八、Task parallel library
简称任务并行库 (TPL) 是 System.Threading 和 System.Threading.Tasks 空间中的一组公共类型和 API。
TPL 的目的是经过简化将并行和并发添加到应用程序的过程来提升开发人员的工做效率。
TPL 动态缩放并发的程度以最有效地使用全部可用的处理器。 此外,TPL 还处理工做分区、ThreadPool 上的线程调度、取消支持、状态管理以及其余低级别的细节操做。
经过使用 TPL,你能够在将精力集中于程序要完成的工做,同时最大程度地提升代码的性能。
九、Modern UI Runtime
简称Modern UI,是一个专一于用户界面设计的框架
十、Task-Based Async Model:基于任务的异步模型
最新版的.Net Framework 4.7主要带来了如下方面的提高:
介绍完.NET Framework,再来讲说.NET平台最新发布的.NET Core。
结构图以下: