微软Ignite 2016 新名词:.NET Standard 2.0

时间:2023-06-23 05:41:52 

这几天(9月26日-30日)微软Ignite 2016(去年起由 Ignite 取代 TechEd)正在美国如火如荼的召开,乍见一个新名词:.NET Standard 2.0。 我得了一种听到新名词就会焦虑的病,赶紧查数据压压惊…

.NET Team Blog 同步发布了一篇介绍文,可说是目前最详细最权威的数据源,抱着懂个大概就好的心态,整理重点如下。

先用两张图说明为什么没事要搞出一套 .NET Standard 新标准? (注:图片取自 MSDN Blog 文章)

.NET Standard 的核心使命在于解决 .NET 跨平台时基础链接库不一致的问题。.NET 发展至今,已初步实现跨平台, 用 C# 就可以写 Windows、macOS、Linux、iOS、Android 程序。 但如下图所示,.NET Framework BCL、.NET Core Library 与 Xamarin 的 Mono Class Library 各自发展,缺乏统一的界面标准,像是System.Collections, System.IO, System.Xml… 这类性质的基础类别,各家支持程度不一,某些 API 可能在某个平台不存在,又或者 API 界面存在差异。

微软Ignite 2016 新名词:.NET Standard 2.0

如果你只专注一种平台,当然可以无视各平台基础链接库的差异,专心学好一种就好。 但如果系统被要求跨平台,差异那怕再小,都会跑出来咬你屁股。 首先,你必须搞懂不同平台的差异,第二,差异提高“跨平台共同链接库/组件”开发的难度。 (脑海中出现一堆恶心的 #if NETCORE … #elif XAMARIN … #endif) 。

过去针对跨平台共享链接库的主推做法是PCL(Portable Class Library),取多个平台的交集,筛选保留各平台都支持的 API,但开发者仍需知道不同平台的差异。.NET Standard 则试图规范一套标准基础链接库 API 界面,各平台依此界面实作出一致的链接库,如此程序代码不需修改即可针对不同平台编译、执行。

微软Ignite 2016 新名词:.NET Standard 2.0

即使有 .NET Standard,还是无法逃避各平台支持度不一的现况。.NET Standard 版本号码与 API 完整度成正比,与支持平台范广度成反比。.NET Standard 2.0提供的 API 数目一定比 1.0 多,但如果想涵盖 Windows Phone 8.1,就只能选择 .NET Standard 1.0 – 1.2。 dotnetstd-2

微软Ignite 2016 新名词:.NET Standard 2.0

随着 .NET Standard 2.0 制定,.NET Core 与 Xamarin 将在新版加入支持,而 .NET Framework 4.6.1 则已符合 2.0 标准。 有没有注意上表的玄机?.NET Standard 1.4 对应到 .NET Framework 4.6.1、1.5 对 4.6.2,结果 2.0 又倒车回到 4.6.1,原来是基于部署普及率考虑,.NET Standard 2.0 拿掉 1.5/1.6 增加但应用不广的 API,好让 .NET Framework 4.6.1 符合 .NET Standard 2.0。 各位同学,今天我们要介绍的成语是-“削足适履”~(笑 )

以下是 .NET Standard 2.0 的主要涵盖范围,细节则参考 github 上的文件。 .NET Standard 2.0 仍在发展中,未来可能还会有变动。

微软Ignite 2016 新名词:.NET Standard 2.0

至于一些与平台高度相关的 API,例如:只有 Windows 才有的 Registry、Reflection Emit 功能不适用 .NET Native、UWP、Xamarin iOS。.NET Standard 采取“需额外安装 NuGet Package 才能使用,在不适用平台执行时抛出例外”的原则,不同的 API 处理方式不一。

如果你需要开发跨平台链接库,官方建议改走 .NET Standard,以降低平台相依性,并允许混合参照 PCL 及 .NET Framework,但 PCL 仍适用特定场合,例如:某些平台不在 .NET Standard 支持之列,PCL 是唯一解。 实作上有个 API Port可侦测程序适用的最低 .NET Standard 标准,再配合检查目标平台是否在该标准支持范围,以便决定标准版本。

完整的 .NET Standard 工具支持将内置于下一版本 Visual Studio “Dev 15″,以 NuGet Package 方式加入参照,而未来 Visual Studio、VSCode、Xamarin Studio 均会提供一线支持。

标签:微软,Ignite,2016,.NET,Standard,2
0
投稿

猜你喜欢

  • 如何在旅行记里关注别人 旅行记里关注别人的教程

    2023-10-22 09:44:10
  • Excel怎么删除空行

    2022-03-07 12:34:18
  • PPT图片批量快速导入、PPT图片批量快速导出

    2022-03-07 10:29:21
  • excel表格中如何自动填充序号?

    2023-08-23 19:54:36
  • 干货分享:这些PDF文件压缩工具都是你不容错过的!

    2023-06-27 22:35:42
  • 苹果Mac系统下Vmware虚拟机怎么设置共享文件夹

    2023-03-26 01:28:23
  • 讯飞输入法是什么

    2023-01-06 10:21:39
  • 怎么让wps表格实现行列转换

    2022-03-15 15:32:59
  • Win10 20H2升级错误无法保留用户个人数据怎么回事?

    2023-04-02 04:08:12
  • 影子系统启动黑屏怎么办_影子系统启动黑屏解决方法

    2022-06-12 07:19:17
  • Win10企业版LTSC没有应用商店如何解决?

    2023-05-29 20:50:06
  • Excel密码丢失怎么办

    2023-05-09 10:19:33
  • Win10 TH2正式版系统消息界面曝光 已集成Skype预览功能

    2022-07-07 02:35:13
  • excel中制作柏拉图的教程步骤

    2023-07-13 22:41:53
  • 什么是雷电3接口 雷电3接口的作用介绍

    2022-03-13 09:57:56
  • wmi provider host占用cpu过高怎么办?wmi provider host占用cpu过高解决方法

    2022-02-17 19:15:55
  • 新版 iCloud for Windows 增加钥匙串管理功能,如何使用 iCloud 钥匙串?

    2023-08-20 01:45:56
  • excel表格默认字体如何修改

    2023-05-05 19:16:01
  • 格式工厂怎么剪辑音乐_格式工厂剪辑音乐的步骤

    2022-08-25 09:49:53
  • iOS12.4 正式版值得更新吗?iOS12.4 正式版更新方法

    2023-07-13 09:35:38
  • asp之家 电脑教程 m.aspxhome.com