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

在两个月前公布.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季度末发布,并且有可能在正式发布前首先提供预览版本。

原文地址:http://www.infoq.com/cn/news/2016/12/dotnet-standard-20-goals


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

两年来的core折腾之路几点总结,附上nginx启用http2拿来即用的配置

为什么要迁移,江湖上传说windows server的稳定性不如某某某,这类议题与八卦新闻没两样,不谈,如果windows的价钱能够和linux相同或者差异不至于那么大,我才懒得换,因为穷,这才是重点。 涉及IO路径…

Vue(笔记)

所有东西必须都在标签里面进行定义,都在div中 报错后不断npm和cnpm Vue简介 Vue (读音/vju/, 类似于view)是一套用于构建用户界面的渐进式框架,发布于2014年2月。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关…

java通过poi读取excel中的日期类型数据或自定义类型日期

java通过poi读取excel中的日期类型数据或自定义类型日期 Java 读取Excel表格日期类型数据的时候,读出来的是这样的 12-十月-2019,而Excel中输入的是 2019/10/12 或 2019-10-12 poi处理excel时,当excel没有明确指明是哪个类型的数据时&…

微软的FreeBSD社区推广活动 北京站,你没看错!微软现在是一家名副其实的开源公司

自2012年开始,微软云计算与企业事业部和Citrix思杰,NetApp达成合作,共同开发出第一版针对Hyper-V虚拟设备驱动以及相关的用户态程序,并将此称之为集成服务 (Integration Service) 。微软也紧密地和FreeBSD社区合作,所有…

别羡慕别人的舒服,静下心来坚持奋斗!!!

通常给家里打电话的时候是晚上23点之后,因为家里也知道我这边忙,我也知道家里23点之前也在忙,所以选择在23点之后和家里联系联系,聊聊家常。自从到济南3年之久,即使在忙也每隔3-5天就给家里通一次电话,每次…

Linux ss命令 报错,ECS Linux中ss命令显示连接状态的使用说明

1. ss命令可用来获取socket统计信息,这个命令输出的结果类似于netstat输出的内容,但是它能够显示更多更详细的TCP连接状态的信息,且比netstat更快更高效。ss命令能够从内核空间直接得到信息,netstat命令读取各种/proc 文件收集信息…

Asp.Net Core 通过中间件防止图片盗链

一、原理 要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件。换句话说&#xff0c…

linux软件可以在所有发行版运行吗,Linux通用的跨发行版的3大软件包管理器

前言本文主要介绍Linux系统上通用的跨发行版的3大软件包管理器。Linux系统上的软件包管理可能非常令人困惑,尤其是对于新手,因为不同的Linux发行版使用不同的包管理系统。在大多数情况下,最令人困惑的部分是软件包依赖项的解析和管理。例如&a…

Java IO: 管道

转载自 Java IO: 管道 译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) Java IO中的管道为运行在同一个JVM中的两个线程提供了通信的能力。所以管道也可以作为数据源以及目标媒介。 你不能利用管道与不同的JVM中的线程通信(不同的进程)。在概念上&#xf…

一款全新的基于IntelliJ和ReSharper的跨平台.NET IDE

JetBrains Rider在今年一月份露面,后来的大部分时间被用在了内部早期预览版上,还没有为公开发布做好准备。而现在,我们可以下载早期预览版,并感受在IntelliJ平台上开发.NET是一种什么体验。早期预览版还存在一些问题,不…

mysql自动插入的时间不对 差8小时

MySQL插入时间差八小时问题的解决方法 更新时间:2019年12月15日 10:19:12 转载 作者:lankeren 这篇文章主要给大家介绍了关于MySQL插入时间差八小时问题的解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具…

windows为什么把linux打败了,快二十年了,人们为什么还是没有抛弃 Windows 转向 Linux?...

原标题:快二十年了,人们为什么还是没有抛弃 Windows 转向 Linux?自伟大的 Linux 操作系统诞生以来, 许多网友都试图列举出 Linux 可能是更好选择的具体原因 ,其中包括:Linux 上的更新速度很快,“…

Java IO 概述

转载自 Java IO 概述 译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) 校对:方腾飞 在这一小节,我会试着给出Java IO(java.io)包下所有类的概述。更具体地说,我会根据类的用途对类进行分组。这个分组将会使你在未来的工…

ASP.NET Core WebListener 服务器

WebListener是一个只能运行在Windows上的ASP.NET Core web服务器,基于Http.Sys内核模块驱动构建。在不借助IIS作为反向代理服务器的情况下,WebListener可以替代Kestrel用来与直接与互联网相连。实际上,WebListener不能和IIS或IIS Express一起…

git删除本地分支、删除远程分支 复制分支

git删除本地分支、删除远程分支 It_BeeCoder 2019-05-15 09:47:20 80268 收藏 15 展开 https://blog.csdn.net/lihua5419/article/details/81706905 1、查看所有分支 git branch -a 2、查看当前所在分支 git branch 3、删除本地的bug_xzx分支 git branch -d bug_xzx 4…

ASP.NET Core的Kestrel服务器

Kestrel是一个基于libuv的跨平台ASP.NET Core web服务器,libuv是一个跨平台的异步I/O库。ASP.NET Core模板项目使用Kestrel作为默认的web服务器。 Kestrel支持以下功能: HTTPS用于启用不透明升级的WebSockets位于Nginx之后的高性能Unix sockets Kestrel …

RandomAccessFile

转载自 RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。但是该类仅限于操作文件。 RandomAccessFile不属于I…

JSR303常见参数

常见参数 NotNull(message "名字不能为空")private String userName;Max(value 120, message "年龄最大不能查过120")private int age;Email(message "邮箱格式错误")private String email;空检查Null 验证对象是否为nullNotNull 验证对象是…