微软为了统一微软平台,造就了.netStandard,不管之前的Framework还是最新的.netCore都必须支持.netStandard标准来统一各个平台的开发api。
以下是之前的微软各个平台构成,这种分叉对于开发人员为多个.NET平台编写代码构成了巨大的问题,因为没有一个统一的类库来定位:
目前有三种主要的.NET平台,这意味着您必须掌握三种不同的基类库,以便编写可在其中运行的所有代码。由于行业现在比起.NET最初创建的时候更加多样化,如果我们定义一个标准,那将极大简化开发过程并且规范各个平台开发的一致性。
以下是.netStandard之后的微软平台构成:
  从图可看出三大平台的底层都是.netStandard来支撑,对于开发人员来说,这意味着他们只需要掌握一个基类库。面向.NET Standard的库将能够在所有.NET平台上运行。平台提供商不必猜测他们需要提供哪些API才能使用NuGet上可用的库。
我们需要.NET标准有两个原因:
1.Driving force for consistency .We want to have an agreed upon set of required APIs that all .NET platforms have to implement in order to gain access to the .NET library ecosystem.
2.Foundation for great cross-platform tooling .We want a simplified tooling experience that allows you to target the commonality of all .NET platforms by choosing a single version number.
 
.NET Standard 2.0有什么新功能?
  当NET Core 1.0时,微软还引入了.NET Standard。有多个版本的.NET标准,以表示所有当前平台的API可用性。下表显示了现有平台的哪个版本与给定版本的.NET Standard兼容情况:
箭头表示该平台支持更高版本的.NET Standard。例如,.NET Core 1.0支持.NET Standard 1.6版,这就是为什么有较低版本1.0 - 1.5的箭头指向的原因。
从图可知微软在.NET Framework4.5开始执行.NET Standard1.1标准(换句话说也许是.NET Standard1.1以.NET Framework为标准制定,毕竟.NET Framework4.5的时候还没有出现.NET Standard标准),这样的话那以后就可以开发1.1版本的.NET Standard作为中间间供.NET Framework引用,也可以供支持了1.1标准的其他平台的引用(例如.NET Core或者未来微软开发的新的平台,只要支持.NET Standard1.1的即可)。这样极大的统一了微软各个平台代码的共享。
官方介绍
You can use this table to understand what the highest version of .NET Standard is that you can target, based on which .NET platforms you intend to run on.For instance, if you want to run on .NET Framework 4.5 and .NET Core 1.0, you can at most target .NET Standard 1.1.(您可以使用此表来决定您要运行的.NET平台来可以定位的最高版本的.NET Standard。(官方这段话大意是如果开发例如.NET Framework4.5 和 .NET Core 1.0上运行的程序,那最多只能开发.NET Standard1.1版本的程序集)
From a library targeting .NET Standard you’ll be able to reference two kinds of other libraries:
  • .NET Standard, if their version is lower or equal to the version you’re targeting.
  • Portable Class Libraries, if their profile can be mapped to a .NET Standard version and that version is lower or equal to the version you’re targeting.
(以上大意是如果你开发了.NET Standard程序集,那你可以引用两种两种类型的类库:
1.引用不大于当前.NET Standard 版本的.NET Standard
2.引用PCL,前提是其描述文件对应到不大于您当前 .NET Standard版本)
The following improvements are included in .NET Core 2.0 Preview 1:
  • Massive API increase (>100%) relative to .NET Core 1.x.
  • Support for .NET Standard 2.0.
  • Support for referencing .NET Framework libraries and NuGet packages.
  • Support for Visual Basic.
以上大意是:
.NET Core 2.0 Preview预览版包括四点改进:
  • 相对于Core1.1增加大量api
  • 支持.NET Standard2.0
  • 支持引用.NET Framework和NuGet的包
  • 支持VB语言
.NET Standard 2.0
.NET Standard allows sharing code, binaries and skills across all flavors of .NET, including .NET Framework, .NET Core, Xamarin, Unity, and UWP(以上大意是开发的.net Standard2.0类库可以在微软旗下任意平台引用,例如在Framework和Xamarin和Unity或者UWP项目下都可以引用同一个.NET Standard类库)
 
Here is what’s new with .NET Standard 2.0:
  • Has a much bigger API surface. It’s extended to cover the intersection between
.NET Framework and Xamarin. This also makes .NET Core 2.0 much bigger as it
implements .NET Standard 2.0. The total number of APIs added to .NET Standard
is ~20,000.
  • Can reference existing .NET Framework libraries. The best thing is:
no recompile required, so this includes existing NuGet packages. Of course,
this will only work if the consumed libraries use APIs that exist in .NET
Standard. However, our extensive API surface results in 70% of all NuGet
packages to be API compatible with .NET Standard 2.0.
(以上大意是 .NET Standard 2.0两个新功能:
  • 支持更多的api
  • 可以引用现有.NET Framework,前提是.NET Framework使用了在.NET Standard 存在的Api才有效)
Visual Studio 2017 Improvements
Visual Studio 2017 continues to use .NET Core 1.x by default.You need to install the .NET Core SDK 2.0 Preview 1 to get .NET Core 2.0 support.(以上大意是VS17默认情况下继续使用Core1.X 的版本,除非你安装2.0预览版得到2.0支持。.NET Core2.0预览版下载地址https://www.microsoft.com/net/core/preview#windowscmd)

ASP.NetCore2.0概览的更多相关文章

  1. CodeFirst从零搭建ASP.NETCore2.0

    没时间介绍了,废话不说先上车 以下所有扯淡都是建立在.NETCore2.0环境已经搭建好 右键解决方案>新建项目> 选择Web>ASP.NETCoreWeb应用程序(.NET Cor ...

  2. 搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi

    里我们用三层架构搭建一个连接MySql的ASP.netCore模板的WebApi项目 首先添加WebApi项目(ASP.NetCore版本) 右键解决方案>新建项目> 选择Web>A ...

  3. 05、NetCore2.0依赖注入(DI)之Web应用启动流程管理

    05.NetCore2.0依赖注入(DI)之Web应用启动流程管理 在一个Asp.net core 2.0 Web应用程序中,启动过程都做了些什么?NetCore2.0的依赖注入(DI)框架是如何管理 ...

  4. 关于asp.netCore3.0区域和路由配置

    在ASP.NET Core 3.0中路由配置和2.0不一样了 一.MVC 服务注册 ASP.NET Core 3.0 添加了用于注册内部的 MVC 方案的新选项Startup.ConfigureSer ...

  5. asp.netCore3.0区域和路由配置变化

    一.MVC 服务注册 ASP.NET Core 3.0 添加了用于注册内部的 MVC 方案的新选项Startup.ConfigureServices.三个新的顶级扩展方法与 MVC 方案上IServi ...

  6. 01、NetCore2.0优化之Web服务器 与 IIS解耦

    01.NetCore2.0优化之Web服务器 与 IIS解耦 在Asp.Net Core 2.0中,是如何实现跨平台的?不使用IIS了,在linux上的WebServer是什么? ---------- ...

  7. 02、NetCore2.0优化之Nuget包

    02.NetCore2.0优化之Nuget包 在NetCore2.0中的包是如何管理的?如何存储的?微软做了哪些优化工作? -------------------------------------- ...

  8. 03、NetCore2.0下Web应用之搭建最小框架

    03.NetCore2.0下Web应用之搭建最小框架 这里我们不使用VS2017或者CLI命令的方式创建Asp.Net Core 2.0网页应用程序,而是完全手工的一点点搭建一个Web框架,以便更好的 ...

  9. 04、NetCore2.0下Web应用之Startup源码解析

    04.NetCore2.0Web应用之Startup源码解析   通过分析Asp.Net Core 2.0的Startup部分源码,来理解插件框架的运行机制,以及掌握Startup注册的最优姿势. - ...

随机推荐

  1. SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析 (转载)

    在SQL SERVER的查询语句中使用OR是否会导致不走索引查找(Index Seek)或索引失效(堆表走全表扫描 (Table Scan).聚集索引表走聚集索引扫描(Clustered Index ...

  2. python自学——文件处理(强制刷新)

    # 文件的刷新flash# 为什么要刷新文件呢?# 首先我们就要知道电脑是怎么储存信息的,# 写的代码保存在缓存中当缓存满了之后就会将内容储存到硬盘中. # 那这个跟刷新有什么关系呢?# 系统也会自动 ...

  3. jdk1.8配置环境变量

    1. 准备好jdk安装文件,选择地址,假设使用默认地址 2. 安装jdk,此时跳出安装 jre 的地址 3. 等待安装 4.找到安装路径,选择jdk 5. 复制文件夹下的bin 6. 点击我的电脑右键 ...

  4. 解决MySQL5.6中的Slave延迟问题的基本教程

    一.原因分析一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在sla ...

  5. iftop – 实时Linux网络带宽监控工具

    在本文中,我们提出了另一个称为Interface TOP (IFTOP)的优秀程序, 它是一个基于实时控制台的网络带宽监控工具. 它将显示接口上网络活动的快速概览. Iftop 平均每 2,10 和4 ...

  6. linux 静态地址配置选项

    最近使用静态地址配置linux, 配置的时候突然不知道配置选项具体内容了,这里面记录一下配置:适用于 ipv4 网络 [root@dhcp-- ~]# cat /etc/sysconfig/netwo ...

  7. kettle性能优化

    普通开发电脑,如果没有网络查询步骤,kettle正常的速度应该在3000~20000条/秒.如果速度在2000条/秒一下,就可能需要调优. 性能优化的方式包括如下几种: 1.通过改变开始复制的数量(针 ...

  8. MySQL报错:error1130

    ERROR (HY000): Host 'ip-172-31-x-x.ec2.internal' is not allowed to connect to this MySQL server 分析,从 ...

  9. 如何删除sharepoint列表List中的全部数据。

    可以使用excel,但是powershell会比较方便 (admin mode - Sharepoint powershell) [System.reflection.Assembly]::LoadW ...

  10. JS内置对象-String对象、Date日期对象、Array数组对象、Math对象

    一.JavaScript中的所有事物都是对象:字符串.数组.数值.函数... 1.每个对象带有属性和方法 JavaScript允许自定义对象 2.自定义对象 a.定义并创建对象实例 b.使用函数来定义 ...