从集权到共和:微软的跨平台开发之道

原文首发于WPDang

我们知道,Java凭借着“一套代码,处处运行”的口号和功能吸引了大批开发者,并击败了众多的竞争对手,但其臃肿的体型和缓慢的发展都拖累了这门计算机语言跟上当前快速前进的计算机编程技术的脚步。尽管现在Android上的应用大多仍依靠Java编写,但一部分开发者也开始意识到,尽管手机硬件的更新换代正在让应用与手机的兼容难度越来越低,但大量依靠Java开发的应用贮存在手机上时,仍会拖累智能手机的运行效率,因此转战C#、python等新兴编程语言的移动应用开发者也在很短的时间内快速增加着。

与此同时,相较于混乱的Android开发市场,苹果对手一直较少。很长一段时间,与Objective-c竞争的只有C和C++,而在2014年苹果推出swift之后,激烈的争斗似乎只在苹果自家的两门语言中发生着。但或许在一段时间之后,苹果自家的编程语言将会被拉进更广大的战场,甚至将与C#语言兵戈相见,而这位搅局者,正是微软。

2016年2月25日,微软正式收购跨平台框架开发机构Xamarin。这对C#开发者来说是非常利好的消息,如此一来,这些利用Visual Studio的开发者们就像长了翅膀一样,能够通过Xamarin凌驾于Windows、Android和iOS之上;而Xamarin的开发非常依赖C#和.NET环境,因此被微软收购也是情理之中的事情。

不过微软给开发者更大的惊喜还在后面:在3月底举行的Build2016大会上,微软宣布Xamarin面向所有开发者免费,而Xamarin SDK也将在不久之后开源。这样激进的做法不禁让人感到惊讶:Xamarin究竟有着怎样的魔力,让微软如此青睐?这个问题恐怕还是要从Xamarin本身说起。

除了完全依靠C#语言和.NET环境进行开发之外,Xamarin最大的优势在于为C#开发者提供了便捷的跨平台开发方案。

熟悉应用程序开发的朋友对应用MVC架构一定再熟悉不过:一个应用除了需要漂亮的界面之外,一定也需要一个完整的逻辑模组。Xamarin的便捷之处在于,它为各个平台的应用提供了通用的逻辑开发方案,开发者可以先不去管UI,而是先使用C#语言和.NET环境来完成这些平台共用的,和平台本身无关的逻辑部分;之后开发者可以再使用预先由Xamarin封装好的C# API来访问和操控Native的控件,进行分别针对不同平台的 UI 开发。因此对开发者而言,Xamarin并不仅仅是将iOS和Android应用转制为UWP的工具,而是能够同时开发UWP、iOS和Android应用的利剑。

对微软而言,作为第一方开发工具,Visual Studio自然是最受到照顾的对象,而Xamarin也会完美兼容Visual Studio。这种融合也意味着开发者能够享受到微软提供的从开发工具、到开发环境、以及跨平台框架的一站式应用开发方案。开发者只需要微软的这一套服务就能够将UWP、iOS和Android应用开发一网打尽。

曾经Xamarin还是第三方跨平台框架的时候,需要面对一个棘手的问题:一旦iOS或者Android平台推出了新的SDK,加入了新的功能,开发者必须要等微软的工程师先进行封装,然后才能在自己的项目中使用;而一旦开发者没有及时更新SDK,或者微软工程师出于疏忽而延迟了新功能上线的时间,那么对开发者而言,带来的后果将会是致命的。但是被微软收购之后,这个致命的缺缺陷也将会变为过去式。

作为“人机交互平台”(Conversations as a Platform)战略构想的一部分,Visual Studio与Xamarin的整合将能够为微软扩充大量的开发者力量,并且让他们在开发更多UWP应用以及跨平台应用的同时,还有机会接入微软的Bot Framework,为用户带来更优秀的应用体验。曾经的微软希望依靠自己成为软件帝国,现在,这家企业正依靠开发者重新建立新的应用共和国。