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 Framework 3.5 2006年11月21日
.NET Framework 4.0 2010年4月12日
.NET Framework 4.5 2012年8月16日
 
最新的版本:.NET Framework 4.7 2017年4月

它提供了创建、部署和运行.NET应用的环境,主要包含三个关键的组成元素:

  1. CLR:公共语言运行时(Common Language Runtime)
  2. FCL:框架类库(.NET Framework Class Library)
  3. DLR:动态语言运行时(Dynamic Language Runtime)

基于.NET框架可以支持多种语言进行开发,如  C#,VB.NET,C++等,也就是我们俗称的跨语言开发

开发和运行一个.NET 应用程序必须安装.NETFramework。

结构图:

.NET 框架的用途:
1、提供了一个面向对象的编程环境,完全支持面向对象编程。
提高了的可复用、可扩展性、可维护性、灵活性
2、对Web Service(WEB服务)的支持
3、实现SOA,支持云计算(windows Azure)
4、支持构建.NET程序的炫彩UI (WPF)

……

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),

它是一种比高级语言低,比机器语言要高的中间语言,基于堆栈,又支持面向对象。

所有能被编译为IL的语言都可以被.NET Framework托管,其它语言要被.NET Framework托管,则需要第三方编译器支持。

FCL:框架类库:

FCL:一个综合性的面向对象的可重用类型集合
从功能上来看,可以将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的版本跌代:

.NET Framework 3.0版本是一个分水岭:
在之前,.NET Framework只提供Asp.net web开发、WinFrom窗体应用程序开发等基本的功能。
在此之后,引入了许多新的特性:
1、WPF:
微软Vista操作系统的核心开发库之一,是一个图形引擎
作用:实现界面显示与程序代码更好的分离
 
2、WCF:
把Web服务、.NET Remoting等技术统一到单个面向服务的编程模型中,以实现真正的分布式计算。
 
3、WF:
WF是一个广泛通用的工作流程框架,从下到上在每个级别都针对扩展性进行了设计。
 
4、Windows CardSpace:
是微软公司取代用户名和密码成为验证网络使用有者身份的新方法。
 
5、LinQ:
查询集成语言,简化不同数据源对象查询操作。
 
6、Ado.net Entity Framework
简称EF,是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案(ORM框架),早期被称为 ObjectSpace,

该框架在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.ThreadingSystem.Threading.Tasks 空间中的一组公共类型和 API。

TPL 的目的是通过简化将并行和并发添加到应用程序的过程来提高开发人员的工作效率。

TPL 动态缩放并发的程度以最有效地使用所有可用的处理器。 此外,TPL 还处理工作分区、ThreadPool 上的线程调度、取消支持、状态管理以及其他低级别的细节操作。

通过使用 TPL,你可以在将精力集中于程序要完成的工作,同时最大程度地提高代码的性能。

9、Modern UI Runtime

简称Modern UI,是一个专注于用户界面设计的框架

10、Task-Based Async Model:基于任务的异步模型

最新版的.Net Framework 4.7主要带来了以下方面的提升:

  1. Win10窗体应用带来了高DPI支持;
  2. 为Win10上的WPF程序带来了触控支持;
  3. 增强了加密支持;
  4. 提升性能和稳定性。

介绍完.NET Framework,再来说说.NET平台最新发布的.NET Core。

结构图如下:

C# .NET .NET Framework .NET CORE 等的关系简介的更多相关文章

  1. 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 ...

  2. 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 ...

  3. .net core .NET Core与.NET Framework、Mono之间的关系

    .NET Core与.NET Framework.Mono之间的关系 首先想要知道.NET Core与.NET Framework.Mono之间的关系,就必须他们分别是什么,有什么用途? 一. .ne ...

  4. Net Framework,Net Core 和 Net Standard 区别

    前几天我在一个群里看到有关这方面的讨论,最后感觉讨论的不是很清晰,有幸的是我们的项目去年就开始迁移NetCore的调研了,我个人多多少少也是有过这方面的研究.下面我将说一下我自己对着三个的认识如果有不 ...

  5. 一张图搞定 .NET Framework, .NET Core 和 .NET Standard 的区别

    最近开始研究.NET Core,有张图一看就能明白他们之前的关系. 上图己经能够说明.NET Framework和.NET Core其实是实现了 .NET Standard相关的东西,或者说Frame ...

  6. Entity Framework (EF) Core学习笔记 1

    1. Entity Framework (EF) Core 是轻量化.可扩展.开源和跨平台的数据访问技术,它还是一 种对象关系映射器 (ORM),它使 .NET 开发人员能够使用面向对象的思想处理数据 ...

  7. Core Animation之框架简介(一)

    Core Animation之框架简介(一) 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/11180241 转载请注明 ...

  8. .NET Core/.NET之Stream简介 Rx.NET 简介

    .NET Core/.NET之Stream简介   之前写了一篇C#装饰模式的文章提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容) .NET Core ...

  9. Spark中Task,Partition,RDD、节点数、Executor数、core数目的关系和Application,Driver,Job,Task,Stage理解

    梳理一下Spark中关于并发度涉及的几个概念File,Block,Split,Task,Partition,RDD以及节点数.Executor数.core数目的关系. 输入可能以多个文件的形式存储在H ...

随机推荐

  1. Python 爬虫监控女神的QQ空间新的说说,实现邮箱发送

    主要实现的功能就是:监控女神的 QQ空间,一旦女神发布新的说说,你的邮箱马上就会收到说说内容,是不是想了解一下 先看看代码运行效果图: PS:只有你有一台云服务器你就可以把程序24h运行起来 直接上代 ...

  2. 浅谈JavaScript的闭包原理

    在一般的教程里,都谈到子作用域可以访问到父级作用域,进而访问到父级作用域中的变量,具体是如何实现的,就不得不提及到函数堆栈和执行上下文. 举个例子,一个简单的闭包:   首先,我们可以知道,examp ...

  3. java+maven+jenkins+svn构建

    操作参照:https://blog.csdn.net/qq_34977342/article/details/82346915 1.创建一个自由风格的项目,起名字 2.设置构建项目最大保存数量,与天数 ...

  4. python 虚拟环境配置

    刚学习 python 的同学经常会遇到一个问题: 已经安装了特定的包或者第三库,但是 pycharm 总是提示没有找到.

  5. Python3 学习笔记之 IDLE

    IDLE: IDLE是Python标准发行版内置的一个简单小巧的IDE,包括了交互式命令行.编辑器.调试器等基本组件,足以应付大多数简单应用. 基本操作: File->New File 新建立p ...

  6. Scala 学习笔记之集合(6)

    object CollectionDemo7 { def main(args: Array[String]): Unit = { //数组使用 val arr = Array("red&qu ...

  7. ShutdownHook- Java 优雅停机解决方案

    想象一下,如果你现在刚好在 word 上写需求文档,电脑突然重启.等待开机完成,你可能会发现写了一个小时文档没有保存,就这么没了... 一个正在运行 Java 应用如果突然将其停止,影响不止数据丢失, ...

  8. 安装sublime插件安装不上遇到的各种坑

    为了学习VUE , 发现没有高亮代码, 百度原来需要安装插件,安装过程中遇到了各种坑,记录下来避免大家踩坑, 首先用代码安装快捷键  ctrl+`   粘贴代码 import urllib.reque ...

  9. Spring Boot2 系列教程(十一)Spring Boot 中的静态资源配置

    当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥 Spring Boot 中的静态资源加载问题:"松哥,我的 HTML 页面好像没有样 ...

  10. Elasticsearch Java API 很全的整理

    Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...