移植到.NET Core,整合各平台更简单

[原文发表地址]:  Making it easier to port to .NET Core [原文发表时间]: May 27, 2016   在我的上一篇文章中,我谈到了关于移植到.Net Core, 并且也恳请大家能给我们一些关于他们的经历和我们有待提高的方面的一些反馈。 这点燃了我们用户的交流热情。 基于这些讨论以及我们与第一和第三方伙伴合作的经验,我们已经决定要通过统一与其它.NET平台的核心API来简化移植工作,尤其是对于.NET框架和Mono/Xamarin之间。 在这篇博客,我将会谈到我们的计划,包括怎样开始以及何时会开始这项工作,以及这些对已有的.NET核心用户的意义。   回顾.NET Core .NET Core平台从希望建立一个现代化、模块化、本地应用程序和跨平台的.NET stack进化而来。促使该业务目标产生的动力在于为全新的应用程序类型(例如 触控式UWP应用程序)或现代的跨平台应用程序(例如ASP.NET core web站点和服务)提供一个整合的stack。 我们即将发布.NET Core 1.0,同时我们已经成功开发了一个功能强大的和跨平台开发stack。.NET Core 1.0开创了把.Net 推行到所有平台的先河。 虽然.NET Core在我们所制定的情境中运行良好,但它只提供了相对于其他.NET平台较少的技术,尤其是相对于.NET Framework来说。其一是因为不是所有东西都是以跨平台做为目标来开发的,其二是我们把一些我们认为不必要功能给删除了。 我们也清楚如果要学习并使用.NET Core,这需要.NET开发人员去花费大量的时间来进行移植。 为用户提供一个全新的API肯定是不错的,但是这种作法彷彿变相的惩罚了长年以来一直使用微软 API 与技术的忠实客户,他们已经使用了我们之前的API和相关技术很多年了,也投入了很多。我们想要扩展我们的.NET平台并推广给更多的开发者,但是我们绝不能以放弃现有的用户为代价的。 Xamarin在这方面做了很好的榜样。他们允许.NET开发人员花费最小的精力来开发IOS和Android平台的移动应用程序。让我们来看看 iOS,iOS 其实跟 UWP 有许多的相似之处,例如对终端使用者经验的高度重视和对静态编译的要求。Xamarin 跟 .NET Core 不同的地方在于, Xamarin 并没有重新构想 .NET…

0

Tuple Tuesday!

[原文发表地址]: Tuple Tuesday! [原文发表时间]: May 31, 2016 在不久的将来,我们试图将元组作为一项核心功能加入到VB和C#中。如果你还没有听说元组,那可以将它理解为是一种把多种值组合在一起的基础数据结构。像.NET里面的 F#, 有许多编程语言已支持它多年,然而在 Visual Basic中不支持确实有些奇怪了。元组就像数组一样,它是一个捆绑了多个值作为一个单元,而除了数组中每个元素具有相同的类型,在元组中每个元素可以有不同的类型。所以,如果我发现在我的程序中,我总是需要同时传两个值,那么我就可以把它们组合成一个元组: 不使用元组的情况…   使用元组的情况… 在上面的例子中,我们可以用包含2个整型的元组作为方法的参数,而不是在方法之间单独传递两个整型参数。这样能使我们更加清楚的知道这些值被作为一个单元来处理。在本例中我 使用了存在于.NET 4.0及以上版本里的通用元组类型System.Tuple (of T1,T2)。你今天也可以这样使用,只是有两个缺点。第一,系统。Tuple(of T1,T2) 以及和它关联的类型都是类,因此每次你创建一个Tuple(of T1,T2)类型,它都会在堆上分配的一个新的对象。在VB和C#中,我们正在考虑使用一套新的值类型的元组类型,如ValueType(Of T1, T2)分配内联地址,这样更方便于使用元组。第二,在收到大量关于元组名称有多重要的客户的反馈后,内置VB(和C#)元组将具有名称: 这意味着你将拥有所有声明自己结构但带有轻量语法的自文档化名称。这有点类似于VB里的匿名类型,同时可以在方法外传值。这使得VB元组具有了像F#语言中元组和记录的所有特点。我们觉得这简直太完美了。 尽管简洁,但仅仅一起传递多个数据并不会太有吸引力,对于元组最耀眼的部分是返回多个值。如果没有元组你需要写这样一种方法,将两个数相除并返回商和余数: 因为VB函数总是精确的返回一个值,如果你想要返回额外的值就需要在调用方法中传递ByRef变量。或者,你自己可以在你的代码中声明QuotientAndRemainder结构,但老实说又有谁想要在自己的项目中,为了一个返回值,创建一个名字有些滑稽的方法类型呢?如果有了元组,你就不必进行这些权衡: 作为一种语言,它的目标是可读的和易理解的,我认为这是迄今为止最简单和最直接的方式去从一个函数返回多个值。我们认为元组的使用,极大的方便了在工程里传递和返回多个值。当使用强大的异步功能时,这个优势更加突出,因为在异步函数中你甚至不能有ByRef参数。今天你将需要声明一个特殊的结构,或使用数组(如果所有的值都具有相同的类型),或者使用元组类型却丢掉有意义的名称。使用元组,你可以拥有所有的方便之处。 此方法通过网络从数据库中提取一些数据,所以它应该是异步的并且遍历所有的订单来计算有用的统计信息,如所有订单的总值,平均订单数和订单的数量。如果没有元组你将不得不在你的项目中添加一个非常讨厌的TotalAverageAndCount类型。 目前,关于在Visual Basic中元组的完整设计策略,可以通过阅读design notes on GitHub来了解,包括用一些其他方式将元组集成到其它语言中。请在GitHub中留下关于Tuple功能设计上的反馈或者在下面进行评论。 上周,我绞尽脑汁地想提出一个好的双关语来介绍元组,导致这篇文章会比原计划晚了一周。“Tuple Tuesday”算是一个较好的选择吧。为了避免混淆,VB语言设计团队为正在添加的那些功能积极集思广益出了许多双关语。我认为下一个设计主题将是“Visual Basic and Patterns – A Match Made In Heaven!” (我认为这将给VB添加一个全新的维度)-敬请期待。在此之前,依旧快乐编程吧! Regards, -ADG

0