移植.NET Core计划,整合各平台变得更简单了!

 在前篇文章中我提到了如何移植 .NET Core,并邀请使用者们不吝啬的回报您的使用经验和改进意见。

  这项措施带动起了非常多使用者之间的讨论。

  根据这些讨论的重点和我们与第一与第三方伙伴合作的经验,我们决定把核心 API 跟其他 .NET 平台,主要是 .NET Framework 和 Mono/Xamarin,做一次整合,借此来大幅简化移植 .NET Core 的功夫。

  在此篇文章中,我会介绍我们的计划、我们将会如何达成这个目标、预计的上市时间,以及这对现在 .NET Core 使用者的意义。

  回顾 .NET Core

  .NET Core 平台 起始于微软对于开发者们想要研发一个现代化、模组化、app-local、并且能够跨平台的 .Net stack 所推出的产品。这项产品背后的商业目标是希望可以提供一个整合的 stack 给全新的应用程式(例如:触控型 UWP 程式) 或者现代跨平台程式(例如:ASP.NET Core 网站与服务)。

  在我们即将推出的 .NET Core 1.0 中,我们成功的开发了一个强大的跨平台开发 stack。.NET Core 1.0 开创了把 .NET 推行到所有平台的先河。

  虽然 .NET Core 在我们所制定的情境中运行良好,但不能否认的是它相较于其他市场上的 .NET 平台来说,可兼容的程式较少。相较于 .NET framework 时此情况尤其明显。一部分是因为不是所有东西都是以跨平台做为目标的情况下开发的,另一部分也是因为我们把一些我们认为不必要功能给删除了。

  种种原因之下,我们了解到如果想要学习并使用 .NET Core,现役的 .NET 开发者必须花费很长一段时间来移植它。

  当然,直接重新编一个新的 API 给新的客户也是一个不错的方案,但是这种作法彷彿变相的惩罚了长年以来一直使用微软 API 与技术的忠实客户。我们是想要把 .NET 平台变得更加强大,并推广给更多的开发者,但是我们并不能漠视现有使用者的权益。

  Xamarin 在这一点上就做得非常好。他们使 .NET 开发者们轻松地在 iOS 和 Android 手机上开发行动程式。让我们来看看 iOS,iOS 其实跟 UWP 有许多的相似之处,例如对终端使用者经验的高度重视和对静态编译的要求。Xamarin 跟 .NET Core 不同的地方在于, Xamarin 并没有重新构想 .NET Stack。 Xamarin 把 Mono 整套搬过来,删去了应用程式模型元件 (Windows.Forms, ASP.NET),加入了 iOS 的元件,再改动了一些细节使其适用为内嵌使用。由于 Mono 和 .NET framework 本质上非常相似,经过这种处理方式之后的 API 是非常容易被现役 .NET 使用者学习与接受的,并且使移植现有的代码到 Xamarin 更为轻松。

  当初在构想 .NET 的时候,我们最重要的核心理念就是希望可以使开发者更有生产力以及协助他们撰写更严谨的代码。我们设计 .NET 能在更丰富的领域和情境中帮助开发者,从桌面和网站应用程式,到微服务、行动应用程式、甚至游戏的研发。

  为了实现我们的核心理念,开发出一个统一的核心 API,并使其可以在任何条件下使用是必要的。一个统一的核心 API 可以使开发者们简单的实现代码共享横跨不同的工作量,使每一位开发者的专长可以得到最好的发挥 ──写出最好的服务与使用者体验。

  .NET Core 的展望

  在 Build 2016, Scott Hunter 即展示了下列投影片:

  我们想要展现给各位的理念是:

  不论您是想要写桌面应用、行动 App、网站,又或者是微型服务,您都可以使用 .NET 来帮您达成您的目标。也因为我们提供统一的 BCL,代码共享将会是一件非常简单的事情。作为一个开发人员,您可以专注在功能与技术对应至您选择的使用者体验与平台。

  我们想要这样实现这些理念:我们将会为以核心基础类别库 Base Class Libraries (BCL)为目标的应用程式提供原始码和二进位码相容性(binary compatibility), 并保证在所有平台上运作方式的一致性。基础类别库(BCL)就是那些存在在 mscorlib、System、System.Core、System.Data、System.Xml,而这并不限定特定的应用程式模型和作业系统实作。

  不论你将目标放在 .NET Core 1.0 的 surface(以 System.Runtime 为基础的 surface),还是在即将释出有扩充 API (以 mscorlib 为基础的 surface)的 .NET Core 版本,你目前的代码都将可以继续使用。

  我们承诺简化将现有代码移植,也将同样保证在函式库与 NuGet 套装软体上。当然包含可携式类别函示库 (portable class libraries)无论他们使用的是 mscorlib 或是 System.Runtime。

  这裡有几个有关这次新增的例子可以让你使用 .NET Core 起来更为顺手:

  1. Reflection 将会变得跟 .NET Framework 一样,不需要 GetTypeInfo (),而旧的 .GetType () 回来了。

  2. 型别将不再会缺少因为清理原因而已经删除的成员(Clone ()、Close () vs Dispose (),旧的 APM APIs)

  3. 二元序列化(BinaryFormatter)将又可以使用

  可以到我们  corefx GitHub 的套件库查看更完整的计划新增名单。

  对 .NET Core 的意义

  从我们跟社群的对话当中我们瞭解到他们的疑虑,使用者们担心这些新增的 API 功能会使得 .NET Core 体验大打折扣,这完全是个误解。我们对 .NET Core 绝大多数的投入, 不论是能以 app local 的方式推出,还是 XCOPY deployment, 又或者是我们的 AOT 编译器工具链,其开源与跨平台的理念是不变的。这同样适用于所有额外的功能和我们对效能的改进,例如新的网路组件 – Kestrel。

  一开始当我们在设计 .NET Core 时,就强调模组化以及付费使用的概念,这表示您只需要消耗最终使用之功能的磁碟空间。我们相信我们仍然可以实现这些目标而不会对相容性问题造成太大的影响。

  最初,我们仰赖将功能分割在微小的函式库中来最小化程式的磁碟利用率,而我们也知道用户喜欢这一点。现在,我们将提供一个比其他手动程序还要更为精确、更好的储存空间的链接工具。这是类似于 Xamarin 开发者现已使用的方式。

  时程与流程

  在我们推出 .NET Core 1.0 RTM 后,我们将开始着手扩充 .NET Core 的 API 介面。如此,持续追踪 .NET Core 的你们即可部署至生产环境。

  在未来几周,您可以在我们的 corefx GitHub 看到更多详细资讯与计划。首先我们会做的就是释出一系列 API references,列出我们将会推出的 API,那么当您在移植代码时,您就可以有所依循来决定是否要跳转到 .NET Core 1.0 或是等待即将推出的 APIs。同时,我们也会宣布哪些 API 我们不打算推出,我们希望能为我们的用户提供一个看板,以查询专案的状态与目标。

  这次将会是对我们为 .NET Core 1.0 做准备所遵循的流程的一大改善,前次发表因为内部流程分享不够公开而造成的不圆满,将在这次修正。

  最后,我们计划在 NuGet 上推出更多的 .NET Core API 更新。这些更新会是渐进式的,亦即是我们将会扩充现有的 API 功能,并同步推出更多的 API。这样一来,使用者们可以得到好处,不用等到 API 完全更新结束才开始使用。这同时也可以让我们把各位对于运作方式的意见与回馈加入我们的更新中。

  在接下来的几周内,我们将会在 corefx 套件库公布更多的资讯。你可以在这个部落格讨论相关状态以及所有的重大决策。

相关文章:


原文地址:https://blogs.msdn.microsoft.com/msdntaiwan/2016/07/01/port-to-dotnet-core/


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

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

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

相关文章

browserquest php安装,请问一下browserquest-php项目换成GatewayWorker的形式需要怎么部署worker...

单进程模式用户间数据容易共享browserquest本身就设计成单进程模式,单进程模式用户间数据容易共享,不用频繁的进程间通讯,开发简单。改成gateway网关模式利弊如果要改成多进程gateway网关模式,代码改动量会很大,要求开…

Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例

转载自 Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 第1部分 ArrayList介绍 ArrayList简介 ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, Random…

ASP.NET Core 介绍

原文:Introduction to ASP.NET Core作者:Daniel Roth、Rick Anderson、Shaun Luttin翻译:江振宇(Kerry Jiang)校对:许登洋(Seay)、魏美娟(初见)、姚阿勇(Mr.Yao) ASP.NET Core 是对 ASP.NET 的一次意义重大的重构。本文介绍了 ASP…

计量经济学自相关matlab,计量经济学 自相关性.ppt

(3)检验自相关性 ①残差图分析:在方程窗口中点击Resids按钮,所显示的残差图(图5.3.7所示)表明e呈现有规律的波动,预示着可能存在自相关性。 图5.3.7 残差图 运用GENR生成序列E,观察E,E(-1)图形(见图5.3.8)。 图5.3.8 E…

Java 并发工具包 java.util.concurrent 用户指南

转载自 Java 并发工具包 java.util.concurrent 用户指南 1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包被添加以前&#x…

JavaScript实现四则运算

编写一个带有两个变量和一个运算符的函数&#xff0c;调用时接收prompt输入 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.or…

mysql中select语句子句,了解mysql中select语句操作实例

Select的语法SELECT[ALL | DISTINCT | DISTINCTROW ][HIGH_PRIORITY][STRAIGHT_JOIN][SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT][SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]select_expr, ...[INTO OUTFILE file_name export_options| INTO DUMPFILE file…

通过几个Hello World感受.NET Core全新的开发体验

2016年6月27日&#xff0c;这是一个特殊的日子&#xff0c;微软全新的.NET开发平台.NET Core的RTM版本正式发布。我个人将.NET Core的核心特性归结为三点&#xff0c;它们的首字母组成一个非常好记的简称——COM&#xff0c;分别代表的含义Cross-Platform、Open-Source和Modula…

Java多线程(六)之Deque与LinkedBlockingDeque深入分析

转载自 Java多线程&#xff08;六&#xff09;之Deque与LinkedBlockingDeque深入分析 一、双向队列 DequeQueue除了前面介绍的实现外&#xff0c;还有一种双向的Queue实现Deque。这种队列允许在队列头和尾部进行入队出队操作&#xff0c;因此在功能上比Queue显然要更复杂。下图…

matlab边算边出图命令,Matlab:不包含边境和工具栏的figure(移除保存图片的白边)...

Matlab:不包含边界和工具栏的figure(移除保存图片的白边)当我们使用matlab的imshow命令显示图片时&#xff0c;会有白框和工具栏出现。在保存图片时会出现白色的边框。下面将说明如何去除这些显示。Matlab启动时运行脚本script.m&#xff0c;文件位置在~/matlab/ directory。在…

JavaScript实现复选框全选与全不选的效果

//里面涉及到几张图片&#xff0c;有需要的可以联系我要&#xff0c;直接私信我就行&#xff0c;每天在这个点都会上线&#xff0c;看到就回&#xff0c;或者从我的资料里面找我的联系方式&#xff0c;收到之后会发给你们的<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1…

ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行

之前两篇文章简析.NET Core 以及与 .NET Framework的关系和.NET Core的构成体系从总体上介绍.NET Core,接下来计划用一个系列对ASP.NET Core的运行原理进行剖析。 ASP.NET Core 是新一代的 ASP.NET&#xff0c;早期称为 ASP.NET vNext&#xff0c;并且在推出初期命名为ASP.NET …

深入并发包-ConcurrentHashMap

转载自 深入并发包-ConcurrentHashMap 前言 以前写过介绍HashMap的文章&#xff0c;文中提到过HashMap在put的时候&#xff0c;插入的元素超过了容量&#xff08;由负载因子决定&#xff09;的范围就会触发扩容操作&#xff0c;就是rehash&#xff0c;这个会重新将原数组的内容…

红帽、微软和 Codenvy 联合推出语言服务器协定(Language Server Protocol,LSP)项目

微软、红帽及容器开发环境供应商Codenvy本周在Red Hat DevNation开放源码大会上宣布将共同发展语言服务器协定&#xff08;Language Server Protocol&#xff0c;LSP&#xff09;项目&#xff0c;让不同的程序编辑器与集成开发环境&#xff08;IDE&#xff09;方便嵌入各种程序…

ConcurrentHashMap总结

转载自 ConcurrentHashMap总结并发编程实践中&#xff0c;ConcurrentHashMap是一个经常被使用的数据结构&#xff0c;相比于Hashtable以及Collections.synchronizedMap()&#xff0c;ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力&#xff0c;但同时降低了对读一…

最全面的常用正则表达式大全

很多不太懂正则的朋友&#xff0c;在遇到需要用正则校验数据时&#xff0c;往往是在网上去找很久&#xff0c;结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下&#xff0c;在这里分享一下。给自己留个底&#xff0c;也给朋友们做个参考。 转载至…

php access allow,PHP标头不适用于Access-Control-Allow-Origin

我使用jQuery File Upload plugin by Blueimp将图像上传到服务器.问题是,发送服务器是admin.example.com,存储图像的接收服务器位于www.example.com上.相同的域,不同的子域.XMLHttpRequest cannot load http://www.example.com/upload/. Origin http://admin.example.com is no…

.NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布&#xff0c;社区里涌现了很多文章&#xff0c;我也计划写个系列文章&#xff0c;原因是.NET Core的入门门槛相当高&#xff0c;很有必要写个深入浅出的系列文章&#xff0c;本节内容帮助你入门。我将可能…

java语言中的访问权限控制符有哪些,18.Java的访问控制符

Java的访问控制符一.类的成员的可见性对于类的成员变量和成员方法&#xff0c;我们可以通过设定一定的访问可见性来限定应用范围。(一).privateprivate表示当前类访问权限。如果类里的一个成员(包括成员变量、方法、构造器等)使用private访问控制符来修饰&#xff0c;则这个成员…

ConcurrentHashMap能完全替代HashTable吗?

转载自 ConcurrentHashMap能完全替代HashTable吗&#xff1f;关于ConcurrentHashMap在之前的ConcurrentHashMap原理分析中已经解释了原理&#xff0c;而HashTable其实大抵上只是对HashMap的线程安全的封装&#xff0c;在JDK7与JDK8中HashMap的实现中解释了HashMap的原理。 至此…