.NET Standard 2.0 新版标准:整齐划一的目标

达尔文
 达尔文
发布于 2016年12月03日
收藏 10

最近结束的.NET Connect 2016大会上,几位微软MVP针对.NET标准的内容和未来发展谈论了自己的看法。

在两个月前公布.NET Standard 2.0时,微软认为新版标准的目标在于为现有的三个主要.NET平台:.NET Framework、.NET Core,以及Xamarin提供一个坚实的底层基础,并为未来满足树莓派或IoT等全新类型设备需求可能需要创建的分支提供支持。

对开发者来说,目前现有三个分支最主要的问题在于难以清楚地知道每个平台具体有哪些功能可用,这个问题会显得极为不便。.NET开发者GaProgMan认为,这会导致开发者过度使用条件编译(Conditional compilation),此外他还补充说Portable Class Library(PCL)已经不再那么易于移植了,因为开发者无法轻松确保自己需要的API在目标平台上依然可用。根据微软的介绍,使用.NET Standard取代PCL作为编写多平台.NET库的底层基础可以解决这一问题。

然而微软MVP Rick Strahl指出,.NET Standard应当被视作一种用于描述“至少在API接口方面需要选择哪一具体的实现,例如.NET Core、Mono、Xamarin或.NET 4.6”的规范。换句话说,.NET Standard本身并非一种实现,而是由.NET底层平台实现的。例如他认为,.NET Core实现了当前版本的.NET Standard 1.6版,而他认为.NET Core 1.2将非常接近.NET Standard 2.0,使其成为.NET Standard 1.6的超集。

为了解释.NET Standard 2.0到底是什么,Strahl将其与核心的.NET Base Class Library(BCL)在核心操作系统、运行时,以及语言服务方面进行了对比。其中包括基本类型系统、运行时的加载和查询操作、网络和文件I/O,以及一些额外的API,例如System.Data。此外还对比了并非.NET Standard标准的一部分,但基于该标准构建的应用程序框架,例如ASP.NET、WinForms、WPF等。

从实现的角度来看,.NET Standard采取了与传统.NET略微不同的方法。实际上.NET Standard针对每个特定平台的实现还提供了可充当类型转发器(Type forwarder)的.NET Standard DLL。应用程序只需要引用类型提供程序(Type provider)DLL,即可将引用转发给能提供所需实现的相应程序集(Assembly)。相比.NET程序集,这种做法提供了类似的用户体验,但在实施者(Implementer)方面有很大不同,因为它们可以分别提供独立的程序包,而非像.NET运行时程序包那样提供一个单一的整体。

.NET Standard 2.0将.NET Standard 1.6 API的范围增大了不止两倍,预计将于2017年1季度末发布,并且有可能在正式发布前首先提供预览版本。

查看英文原文.NET Standard 2.0: Setting Expectations Straight

编译InfoQ

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题: .NET Standard 2.0 新版标准:整齐划一的目标
加载中

精彩评论

醉丶千秋
醉丶千秋
再怎么黑也无法阻挡.net前进。
hantsy
hantsy

引用来自“cabbage89”的评论

做了快10年.net,失望透顶,这个什么.net standard版本混乱,core还依赖Win版的4.6.2!不知道它有什么用!远远不如几十年前的JAVA SE / JAVA EE规范
core 依赖 Win 版本?,,你 net 10 年也白做了,我在 Docker 和 Redhat 都安装过 .net core 1.0 。
假正经哥哥
假正经哥哥

引用来自“cabbage89”的评论

做了快10年.net,失望透顶,这个什么.net standard版本混乱,core还依赖Win版的4.6.2!不知道它有什么用!远远不如几十年前的JAVA SE / JAVA EE规范

引用来自“hantsy”的评论

core 依赖 Win 版本?,,你 net 10 年也白做了,我在 Docker 和 Redhat 都安装过 .net core 1.0 。
我估计是1年工作经验用了10年的人吧
eechen
eechen
乱七八糟
cabbage89
cabbage89
做了快10年.net,失望透顶,这个什么.net standard版本混乱,core还依赖Win版的4.6.2!不知道它有什么用!远远不如几十年前的JAVA SE / JAVA EE规范

最新评论(22

守岁
说乱的,应了那句话,“不明则乱”
a
acj
乱七八糟
假正经哥哥
假正经哥哥

引用来自“cabbage89”的评论

做了快10年.net,失望透顶,这个什么.net standard版本混乱,core还依赖Win版的4.6.2!不知道它有什么用!远远不如几十年前的JAVA SE / JAVA EE规范

引用来自“hantsy”的评论

core 依赖 Win 版本?,,你 net 10 年也白做了,我在 Docker 和 Redhat 都安装过 .net core 1.0 。
我估计是1年工作经验用了10年的人吧
hantsy
hantsy

引用来自“cabbage89”的评论

做了快10年.net,失望透顶,这个什么.net standard版本混乱,core还依赖Win版的4.6.2!不知道它有什么用!远远不如几十年前的JAVA SE / JAVA EE规范
core 依赖 Win 版本?,,你 net 10 年也白做了,我在 Docker 和 Redhat 都安装过 .net core 1.0 。
cabbage89
cabbage89
做了快10年.net,失望透顶,这个什么.net standard版本混乱,core还依赖Win版的4.6.2!不知道它有什么用!远远不如几十年前的JAVA SE / JAVA EE规范
eechen_
eechen_
希望C#干翻Java
C/C++/C#/PHP/Node.JS足够了
BruceWan
BruceWan
Mono才是王道
eechen
eechen
乱七八糟
返回顶部
顶部