Net Framework,Net Core 和 Net Standard 区别

摘要:
大家的讨论是这个问题引起的如下:NetCoreNetFrameworkNetStandard最终大家想了解的是这些的区别是什么。NetCore的出现用于满足当前以及未来软件开发的需求2.NetCore是一个全新的框架,是.Net的跨平台的实现,它和NetFramework有很多共同的特性,这也就意味着NetFramework从业者转到NetCore将会变的很简单。而NetStandard是一个规范。

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

大家的讨论是这个问题引起的如下:

Net Framework,Net Core 和 Net Standard 区别第1张

NetCore

Net Framework,Net Core 和 Net Standard 区别第2张

Net Framework

Net Framework,Net Core 和 Net Standard 区别第3张

Net Standard

Net Framework,Net Core 和 Net Standard 区别第4张

最终大家想了解的是这些的区别是什么。

  Net Framework 是什么

1.Net Framework 是Net的一种实现,在此类库上我们可以使用C#,VB,F#进行程序编写,主要用于构建Windows 下的应用程序

2.有两部分组成部分:

i. 公共语言运行时(CLR)处理应用程序

ii. 基础类库(BCL)这是可重用的代码库,使用其编写进行应用程序编写

3.在执行的过程中.Net编写的代码将会编译成一种称为中间语音(IL)存储形式以DLL和EXE后缀名结尾的文件为主,当程序运行时CLR会编译转换为机器代码。

4. Net Framework 本身不是跨平台的也就是话说仅限于运行在Windows 平台,想要跨平台需要借助第三方。

  Net Core 是什么

1.Net Core 的出现就是为了适应软件开发的趋势,因为各种不同的设备还有云计算的出现,其他的操作系统使用量也有所增加,如果Net 不发生改变也就意味着市场将会越来越小。Net Core的出现用于满足当前以及未来软件开发的需求

2.NetCore是一个全新的框架,是.Net的跨平台的实现,它和Net Framework有很多共同的特性,这也就意味着Net Framework从业者转到Net Core 将会变的很简单。

3.Net Core的所有方面都是开源的,无论是类库,运行时,编译器。NET Core3.0之后支持了C#,VB,F#。

  Net Standard是什么,

1. Net Standard 是一个规范,它定义了Net Framewoek和Net Core必须实现的Api,它的出现为各种平台上开发的.Net人员解决了代码共享问题,但是仅用于开发类库,意思就是说如果你的类库是Net Standard规范的,那么此类库既可以是Net Framewoek也可以是Net Core类库。

2. 微软提供的的图表详细说明了各个不同版本的兼容情况

i. 如果我们的类库是NET Standard 2.0版本的如果想在Net Framework和Core两种实现中使用,则根据此图表,我们必须为.NET Core项目选择2.0版本和NET Framework 4.6.1的版本

Net Framework,Net Core 和 Net Standard 区别第5张

  总结:

从上面我们可以看出,.Net 是一种标准,而Net Framework 和NetCore 是.Net 的一种实现。而Net Standard 是一个规范。

  题外话:

    作为微软技术站的从业人员,微软这几年的动作也告诉我们我们需要多方面的学习才能实现更高的价值。

免责声明:文章转载自《Net Framework,Net Core 和 Net Standard 区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇faiss索引基于数量级和内存限制的选择Redis事务、持久化、发布订阅下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux环境下如何生成core文件

  Linux环境下进程发生异常而挂掉,通常很难查找原因,但是一般Linux内核给我们提供的核心文件,记录了进程在崩溃时候的信息。但是生成core文件需要设置开关,具体步骤如下:   1、查看生成core文件的开关是否开启,输入命令# ulimit -a   我们看到,第一行core文件大小为0,没有开启。   2、使用#ulimit -c [kbyte...

[转]iOS开发使用半透明模糊效果方法整理

转自:http://www.molotang.com/articles/1921.html 虽然iOS很早就支持使用模糊效果对图片等进行处理,但尤其在iOS7以后,半透明模糊效果得到大范围广泛使用。包括今年最新发布的iOS8也沿袭了这一设计,甚至在OS X 10.10版Yosemite中也开始大量使用半透明模糊。 在iOS开发当中,我们有很多选择可以做半透...

python pip安装第三方模块

一、pip工具使用 安装windows版本python,自带pip工具。2者路径相同。 如果设置了环境路径,可以直接在命令提示符窗口下尝试运行pip。如果没有设置环境路径,可以先cd命令到pip工具的安装文件夹下,再运行pip。 安装Pillow模块: pip install Pillow 二、批量安装常用模块 安装Anaconda。 三、模块搜索路径 1...

core文件找不到了

开始以为是core文件太大,设置ulimit -c unlimited 以后,再次访问,显示 ./a.out Segmentation fault (core dumped) 但是却找不到这个文件的地方,最后 sysctl kernel.core_patternkernel.core_pattern = /apsara/tubo/corefile/core...

IOS安全攻防(一)

Hack必备的命令与工具 你的应用正在被其他对手反向工程、跟踪和操作!你的应用是否依旧裸奔豪不防御? 郑重声明一下,懂得如何攻击才会懂得如何防御,一切都是为了之后的防御作准备。废话少说,进入正题。 今天总结一下为hack而做的准备工作。 常用的命令和工具 ps ——显示进程状态,CPU使用率,内存使用情况等 sysctl ——检查设定Kernel配置 n...

解决'androidx.arch.core:core-runtime' has different version for the compile (2.0.0) and runtime (2.0.1)

先说原因,我们引用的包版本不同产生了冲突,所以编译不通过。解决的办法是在引用的时候排除一个版本,只留一个版本。 解决过程: 先找出哪些库引用了相同的库,仅仅是版本不同。 gradle app:dependencies app换成你工程中的模块名,它会生成一个依赖列表,我们要做的是分析一下这个列表,比如我的引用就是: dependencies { i...