.Net三种实现以及跨平台

作为一个.Net 程序员,当别人跟你提到.Net的时候,如果你的第一反应还只是.Net Framework,那么你已经落伍了。由于Net的跨平台已经慢慢与趋向于完整,从最初的momo项目到现在.Net Core的,.Net的实现已经不仅仅是.Net Framework一种,它应该还包括:.Net Core 和 Xamarin。接下来,我们分别简单的谈谈这几种技术:


.Net Frameowrk

相对于这个大家应该都不陌生,像Windows Form, WPF, asp.net(包括MVC),Workflow等等的技术,都是属于这一大框架。


.Net Core

目前这一实现下,我们可以开发两种类型的项目一种是.Net Core Console App 和Asp .Net Core Web Application。这两种类型的程序都是跨平台的实现,也就是说当你开发者两种程序时,都是可以运行在Lunix平台上的。一种是控制台程序,一种是网站。其实在最新的官方博客中,把UWP(Universal Windows Platform)也归入到了.Net Core这个平台中。UWP能开发运行于所有Windows设备的应用程序,包括桌面,平板,手机(虽然微软已经宣布停止了Windows Phone这个项目),XBox等等,是一种基于Windows的跨设备统一平台


Xamarin

这个的前身其实就是momo,在2016年时候已经被微软收购并且随之开源。使用Xamarin我们可以开发运行于苹果设备上的程序包括手机和平板,也可以开发安卓手机以及其它安卓设备的程序。


基于以上三种.Net实现,我们应该能感受到微软在跨平台这方面做出的努力。从表现层Xamarin到后台的Asp.Net Core,微软在跨平台的布局也基本已经完成。但是也正是由于越来越多的.Net实现,他们都基于不同的API有了各自的实现拥有了不同的类库,对于一个开发者是极其不方便的。所以微软推出了.Net Standard。



.Net Standard

.Net Standard的目的是为了解决不同.Net实现之间的代码共用,因此.Net Standard拥有一个非常重要特点:.Net Standard定义了一系列的API,而所有的.Net实现都必须实现这些API,也就是说上面说到的三种.Net实现都必须实现这一套API,因此.Net Standard 的代码能够被共享。

为了能够更新的理解,我们可以看两张图。在.Net Standard推出之前,3个平台都是自己的类库,所以代码无法被共享:



值得一提的是,在.Net Standard推出之前,为了实现UWP和和Xamarin之间的代码共享,微软推出了Portable Class Libraries(PCL)。但是这种类型的类库最终会被.Net Standard取代,已有的PCL也可以有办法升级到.Net Standard。


而在推出.Net Standard以后,3种.Net平台可以代码共享:



以上就是目前.Net平台的三种实现和跨平台。