写点什么

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

  • 2016-12-01
  • 本文字数:1050 字

    阅读完需:约 3 分钟

最近结束的.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

2016-12-01 18:003669
用户头像

发布了 283 篇内容, 共 106.5 次阅读, 收获喜欢 62 次。

关注

评论

发布
暂无评论
发现更多内容

MySQL基础之十二:增删改

打工人!

myslq 6月日更

小团队真的适合引入SpringCloud微服务吗?

xcbeyond

微服务 6月日更

实现一个执行Explain 命令的Mybatis 插件

water

回归分析

Qien Z.

6月日更 回归分析

springboot启动流程之加载入口类

梦倚栏杆

SpringCloud Gateway 动态路由

黄仲辉

mongodb 响应式编程 源码阅读 动态路由 SpringCloud Gateway

标杆管理:让自己快速成长的实用工具

石云升

创业 职场经验 6月日更

色情,科技,与女性

脑极体

Python——列表切片

在即

6月日更

前端 CSS 变量简介及基本使用方法

编程三昧

CSS css3 大前端 样式

算法训练营 - 知识总结

心在飞

Trello个人生产力简易指南

俞凡

生产力 认知 大厂实践

Kubernetes手记(11)- 配置信息容器化

雪雷

k8s 6月日更

【FlinkSQL】Flink SQL Query 语法(四)- Rattern Recognition

Alex🐒

flink 翻译 FlinkSQL flink1.13

《原则》(十四)

Changing Lin

6月日更

假如我是创业公司CEO之电商小程序微服务拆分

ifc177

【LeetCode】猜数字大小Java题解

Albert

算法 LeetCode 6月日更

数字化转型的征途

CECBC

算法训练营 - 学习笔记 - 第十周

心在飞

「SQL数据分析系列」3. 查询入门

Databri_AI

MySQL select

架構實戰營 - 模塊 5 作業

Frank Yang

架构实战营

架构实战营 - 模块6 - 作业

笑春风

架构实战训练营 - 模块五课后作业

Johnny

架构实战营

视频号真人首播 - 踩坑经验总结

悟空聊架构

复盘 直播 视频号 6月日更

经济金融的数字化转型并没有消除风险,风险反而更加复杂

CECBC

物联网平台规则引擎流转到S3对比

张俭

azure IoT AWS 华为云

LeetCode 每日一题「接雨水」

陈皮的JavaLib

Java LeetCode 动态规划

Pandas高级教程之:Dataframe的合并

程序那些事

Python 数据分析 pandas 程序那些事 数据分析研究

浏览器上有趣的Console命令都了解吗?

空城机

大前端 浏览器 6月日更

面试官嘲笑我,这你都不会?

李阿柯

php 面试 redis cluster

算法之异位词字符处理

Skysper

算法

.NET Standard 2.0:整齐划一的目标_.NET_Sergio De Simone_InfoQ精选文章