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. connection pool exhausted

    1.发现问题 生产环境发现有一些redis报错日志 connection pool exhausted.如果redis中没有数据 就直接回源 查DB.暂时不会有什么大问题.中文意思是连接池耗尽. 2. ...

  2. 基于操作系统原理的Webmin管理工具的安装使用

    一.实验目的 1.了解Webmin管理工具的功能. 2.掌握Webmin的安装. 3.掌握Webmin管理工具的使用 二.实验内容 1.下载Webmin安装包. 2.在Linux主机中安装Webmin ...

  3. Redis 相关功能和实用命令(五)

    慢查询原因分析 由于 Redis 是单线程的,它内部维护了一个命令队列,所以当有耗时的命令出现时,比如 keys *,后面的命令会被阻塞,通查查出慢查询可以对服务进一步优化. 设置慢查询阀值:默认10 ...

  4. 《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

  5. redis分布式锁-自动超时锁(在用)

    1.加锁代码结构 2.解锁代码结构 3.java实例 4.测试类 5.测试日志 加锁代码结构 def acquire_lock_with_timeout(conn,lockname,acquire_t ...

  6. Ceph 的 'MAX AVAIL' 和 数据平衡 - Storage 6

    1. 客户环境 节点数量:4个存储节点 OSD数量:每个节点10块8GB磁盘,总共 40 块OSD Ceph 版本: Storage 6 使用类型:  CephFS 文件 CephFS数据池:  EC ...

  7. IDEA 导入 Maven 项目后报错 cannot resolve symbol 解决办法

    这两天整理项目,导入新的 Maven 项目时出现 cannot resolve symbol ,即使 rebuild 也没有用.解决办法如下: 1. File -> Close Project: ...

  8. Linux下几种常见压缩方式测试对比

    目录 Linux下几种常见压缩方式测试对比 参考 简介 测试 总结 Linux下几种常见压缩方式测试对比

  9. 学习WEBAPI(DOM)第二天

    目录 第二天学习目标: 一.阻止超链接的默认跳转行为 二.鼠标进入事件和鼠标离开事件 三.根据name属性值获取元素==>表单标签,返回的是伪数组 四.根据类样式的名字来获取元素,返回的是伪数组 ...

  10. 【博客美化】添加github图标

    <a href="https://github.com/cai3231" target="_blank"> <img style=" ...