转载

微软Build大会有感:Windows UAP开始让人惊喜

微软Build大会有感:Windows UAP开始让人惊喜

从C语言起步,一路走来,我一直坚守着.NET开发的一方净土。在许多社交平台上都看到过许多有关学习什么编程语言更有前途的争论,然而我对于学习方向的选择仅凭兴趣,而从不问前途。曾国藩有一句话说得精道:“莫问收获,但问耕耘”。

所以,很多东西,只有深入才能真正了解,而非几句口角就能解决的,没有绝对的完美,更没有纯粹的拙劣。我当初选择往.NET方向发展完全出于个人喜好。

提到UAP,不得不让我想起一件事:在Windows 8发布后,Windows Phone 8也随之发布,但当时有一个“惊天地,气鬼神”的消息,微软公司明确表示Windows Phone 7.x不能升级到8.0。这一事件掀起了不小的波澜,就连我作为一位Windows开发者也感到有些迷惑,微软为何要“牺牲”掉7.x呢?虽然后来我知道是因为内核不同而无法升级,但心里仍有疑虑。

直到前不久微软发布Windows 10 SDK的预览版本,以及最近的Build 2015大会上的展示,我才完全消除了心中的悬念。过去一直认为微软的“牺牲”做法不太合理,而当我接触到UAP(通用应用)后,我的态度瞬间转变,平台统一尽管难度很大,但我至少已经看到微软的成绩了。UAP可以大大降低为多个平台开发应用的成本。

所谓通用应用,通俗一点说就是开发一个App,可以同时运行在PC、笔记本、平板电脑、手机、xBox等多种设备上,哪怕平台之间的系统不是完全相同,不过有着共同的内核,相同的运行时库,为打通平台提供了充足条件。

其实,在8.1的时候,微软已经在尝试统一应用了,不过那时候的应用程序项目还是分开面向Windows Store和Windows Phone两种平台的,然后再通过一个代码共享项目来整合一些共用的代码。这种“共享代码”式的通用只是个浅层次的通用,实际依旧是不同平台运行着不同的应用程序。到了面向Windows 10的UAP才真正实现了平台通用,所有平台都可以运行同一个应用项目,由原来的三个项目合并为一个,而且也不用考虑哪些API在Windows Phone上没有实现了,因为大部分通用的API都被放到一起。许多API与8.1版本的API相近,开发者无需学习更多的知识就可以迁移开发。

UAP应用的API集合是通过一系列协定来描述的,并在SDK目录下通过一个XML文件来统一配置,包括API的适用范围以及版本号等信息。将来如果运行库有更新,直接对该XML文件进行修改即可,或者可以直接添加新的API集而不更改现有的API集。但考虑到有个别功能,可能平台特定性较强,比如我们知道,WP手机上有个后退键,而Windows平板上是没有这个键的,即处理后退键的API并非全平台通用的,对于这种情况,可以在适当时候使用扩展SDK(Extension SDKs),一般情况下扩展SDK有两个,一个是特定于PC桌面的Desktop SDK,另一个是特定于手机平台的Mobile SDK,仅仅当开发者要用到平台特定的API时才需要引用这些扩展API,并可以在代码中判断某些API是否可用,毕竟UAP是可运行于所有平台的设备上的,如果运行在平板电脑上,处理后退键的API不可用,应用程序就不会执行相关代码,避免意外错误。(此处不对UAP做深入说明,只是简单描述一下,有兴趣的朋友可以参考一下我的另一篇文章: 链接 )。

另外一个亮点就是:可以以最小的代价将其他平台的应用移植为Windows UAP,比如iOS和Android、WebApp等应用,同样包括Windows平台自身的Win32和以往的.NET应用。不少人对此持担忧的态度,不过我倒觉得不然,一则可以强化应用的多样性,更何况应用的移植并不能掩盖原生API的优越性。二则Visual Studio对跨平台的支持也是一件大快人心的事。Visual Studio客观上被公认是最强大而没有之一的开发环境,曾经有不少开发者都希望Visual Studio能够支持更多的编程语言和平台开发,如此一来,开发者们能够在他们最熟悉的环境中创造出更多的应用和价值。加上.NET的开源也会增加许多第三方组件,广大开发者在日常的开发任务可以用上更多的辅助工具,何乐而不为。

整个Build大会,可以说是惊喜不断。我们不能要求微软在短时间内就能一步登天。从长远来看,微软这种从自然垄断到多模式开放的策略将会收获不匪,也是值得肯定的。企业战略并不在于局部人群眼中的优与劣,也不会因时间或空间的局限定位而有先缓之别,重要的是其能恰到好处地够融入整个“生态圈”,并能获得更多资源的加入。微软公司的“是是非非”,谁也说不清,也没有必要纠结这些事情,一切合理就好。

最后再谈谈Windows 10,近来对于Windows 10的争议不断,我在想,有争议就说明它有成就;相反,如果没有成就的产品,谁会去争议。如果你要问我如何看待这些争议,我只能用曾仕强教授的一句话来回答:“一个人履历丰富以后,看事情会看得很深入,体悟也会跟别人不一样,会因对方不同的层次,不同的感受,来与之因应。 人心不同,各如其面。每一个人的立场不一样,感受就会不一样”。

周家安,编程爱好者,长期专注于Windows、.NET开发相关技术的研究与推广。代表图书著作有:《深入浅出Windows 8.1应用开发》、《精通C#5.0》。

正文到此结束
Loading...