感谢书籍《ASP.NET Core 技术内幕与项目实战》及其作者杨中科。

.NET开发平台是:.NET Framework、 .NET Core、Xamarin/Mono的统称
.NET Framework 主要用于window平台下的程序开发。
.NET Core 主要用于跨平台程序开发。
.NET Standard只是规范,一个NET Standard类库可以被支持其版本的.NET Framework、NET Core、Xamarin等引用。
Xamarin/Mono 主要用于移动端开发,Mono也能做Web等跨平台开发,但主要专注移动端。
NET Core:免费、跨平台、开源,跨平台: 程序可以运行在Windows、Linux、 Mac等操作系统下。
Net Core为云而生不止于云,不止于Azure
尽管绝大部分用法都没变,但是.NETCore不是 .NET Framework的升级版,无法直接升级

NET Framework缺点:

1、系统级别的安装,互相影响
2、无法独立部署
3、ASP.NET 和IIS深度耦合
4、ASP.NET资源消耗大
5、非云原生

NET Core时优点:

  1. 支持独立部署,不互相影响;
  2. 彻底模块化:
  3. 没有历史包袱,运行效率高
  4. 不依赖于IIS
  5. 跨平台
  6. 符合现代开发理念: 依赖注入、单元测试等

验证:NET Standard只是标准,不是实现

1)建.NET Standard类库项目,确认版本是2.0,建一个类静态方法中打印FileStream类实现类库的物理路径typeof (FileStream).Assembly.Location
新建 standard 类库,添加静态函数

public static String GetLibLocation()
{return  (typeof(FileStream)).Assembly.Location;
}

2)分别建.NET Framework和.NET Core的控制台项目,添加对类库项目引用,并且调用。
注意.NET Framework和.NET Core引用时.NET Standard类库支持版本。

.NET Standard只是规范,一个NET Standard类库可以被支持其版本的.NET Framework、NET Core、Xamarin等引用。而.NET Core类库、.NET Framework类库则不可以。如果编写一个公用的类库,尽量选择.NET Standard,并且尽量用低版本。

.net 官方文档:
Given many of the API additions in .NET Standard 2.1 require runtime changes in order to bemeaningful, .NET Framework 4.8 will remain on .NET Standard 2.0 rather than implement .NETStandard 21. .NET Core 3.0 as well as upcoming versions of Xamarin, Mono, and Unity will beupdated to implement .NET Standard 2.1.

右击项目下的依赖项。

在.net core 和.net Framework 下分别新建控制台程序:

  static void Main(string[] args)
{Console.WriteLine(standlab.Class1.GetLibLocation());Console.ReadKey();}

打印出路径如下:

.net Framework
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll.NET Core
C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.15\CoreLib.dll

3)用反编译工具ILSpy (尽管开源) 分别反编译VS中FileStream、.NET Framework和.NETCore运行中的。BeginRead方法实现以及定义有不同

.net standard
// System.IO.FileStream
public override int ReadByte()
{throw null;
}
.net Framework// System.IO.FileStream
using System.Security;[SecuritySafeCritical]
public override int ReadByte()
{if (_handle.IsClosed){__Error.FileNotOpen();}if (_readLen == 0 && !CanRead){__Error.ReadNotSupported();}if (_readPos == _readLen){if (_writePos > 0){FlushWrite(calledFromFinalizer: false);}if (_buffer == null){_buffer = new byte[_bufferSize];}_readLen = ReadCore(_buffer, 0, _bufferSize);_readPos = 0;}if (_readPos == _readLen){return -1;}int result = _buffer[_readPos];_readPos++;return result;
}.net core
// System.IO.FileStream
public override int ReadByte()
{PrepareForReading();byte[] buffer = GetBuffer();if (_readPos == _readLength){FlushWriteBuffer();_readLength = FillReadBufferForReadByte();_readPos = 0;if (_readLength == 0){return -1;}}return buffer[_readPos++];
}

如有引用请说明文章原地址,谢谢。
本文相关源码:
https://pan.baidu.com/s/1_6srRib9vItxBk6__d0wlA?pwd=ofew
提取码:ofew

.NET Framework、 .NET Core、.NET Standard区别。相关推荐

  1. 通俗易懂,什么是.NET/.NET Framework/.NET Core/.Net Standard?

    什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NET的相关概念,这主要包 ...

  2. 【转】Net Framework,Net Core 和 Net Standard 区别

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

  3. .NET Core,.NET Framework和Xamarin有什么区别?

    本文翻译自:What's the difference between .NET Core, .NET Framework, and Xamarin? Microsoft now has .NET C ...

  4. .net standard类库同时兼容Framework和Core获取配置文件

    一.新建.net standard类库 二.修改.csproj项目文件 打开项目文件 修改TargetFramework为TargetFrameworks:注意:多了个s:增加framework版本: ...

  5. .NET SDK-Style 项目(Core、Standard、.NET5)中的版本号

    .NET SDK-Style 项目(Core.Standard..NET5)中的版本号 独立观察员 2020 年 12 月 24 日 之前 .NET Framework 时,项目版本号等信息是存储在  ...

  6. 将 .NET Framework 项目转换为 .NET Standard 项目

    将 .NET Framework 项目转换为 .NET Standard 项目 独立观察员 2020 年 8 月 20 日 如今 .NET Core 是未来发展的主流(至少在 .NET 5 发布之前) ...

  7. C# 什么是Asp.net Core?和 .net core有什么区别?

     本章全部摘自什么是Asp.net Core?和 .net core有什么区别? ,做加深记忆用 为什么要写这篇文章  写这篇文章有两个原因,第一个是因为新站点创建出来后一直空置着,所以写一篇文章放在 ...

  8. Visual Studio 2017 15.5预览版添加对F# Core及Standard的支持

    自.NET Core第一版发布以来,Microsoft一直在该平台上支持F#.但是相比起.NET Core上的兄弟语言C#和VB.NET,F#的工具可用性一直拖后腿.随着Visual Studio 2 ...

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

  10. .NET Core和ASP.NET Core简介与区别

    本文主要简单介绍一下.NET Core和ASP.NET Core,以及它们之前的联系和区别. 原文地址:.NET Core和ASP.NET Core简介与区别

最新文章

  1. Python:urllib2模块的基本使用
  2. Query理解在美团搜索中的应用
  3. 从源码角度入手实现RecyclerView的Item点击事件
  4. 盘点上海AI行业的10岁、20岁和30岁们
  5. 使用ssh连接WSL
  6. Js中 call() 与 apply() exports
  7. APMServ5.2.6 升级php5.2 到 5.3版本及Memcache升级!
  8. SanDisk闪迪借助新型固态硬盘提升云计算性能和密度
  9. linux常用命令总结-第一次考试
  10. Spring4.x()--Spring的Jdbc事务-零配置
  11. puppet成长日记二 Package资源详细介绍及案例分析
  12. 使用nvl就不能groupby了吗_现在的手机大部分都不能换电池,使用1至2年就需要更换吗?...
  13. 怎么彻底删除users下的文件夹_c盘中的users文件夹删除了怎么办?
  14. SQL——查询和1002号的同学学习的课程完全相同的其他同学的学号和姓名
  15. app模式会被第三方平台模式取代吗_手机 App 不能取代第三方浏览器的原因是什么?...
  16. html图片水平镜像翻转
  17. 在c语言中char的用法,在C語言中 char的用法是怎麼用的啊
  18. 什么是IDC?数据中心该如何选择?
  19. 这样也行 使用QQ强行视频窥探MM长相(转)
  20. 【linux】md5sum 命令详解

热门文章

  1. java 授权码模式_Spring Security OAuth2 授权码模式的实现
  2. R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)
  3. App/H5/小程序测试技术
  4. easyswoole上传视频到阿里云(继承上面easyswoole视频上传大小限制取消代码)
  5. 2022 第十三届 蓝桥杯 省赛 Java B组 真题 详细解析 答案
  6. 树莓派挂载硬盘以及播放视频
  7. SQL prompt 怎么重新加载数据库(清除缓存)
  8. 游戏软件的发展和特点
  9. NoSQL数据库有哪些?
  10. 英伟达 gsync demo NVIDIA 钟摆测试