转 开发者谈微软Windows Phone 8之变

转自InfoQ http://www.infoq.com/cn/articles/wp8-developer-interview

6月20日微软正式发布了Windows Phone 8,开发层面将支持本地代码(Native Code),支持C、C++、C#、VB和HTML5语言和代码;此外,微软还表示除了部分Windows Phone 7设备支持升级Windows Phone 7.8系统之外,几乎所有目前在售的Windows Phone 7智能机都不会升级Windows Phone 8,此举立刻引起社区的热烈讨论,因此,我们特别采访到 @马宁_aawolf@维动科技吴澜 ,以及人人网高级布道师 @张欣丨Kenn ,米聊Windows Phone负责人 @-李政- 一起来分享他们对于这一事件的看法和观点。

InfoQ:请先做下自我介绍?

马宁:我是马宁,现在OpenXLive从事技术研发的工作,之前在微软亚洲工程院的Embedded部门工作过,再之前是微软Windows Mobile和Windows Embedded的MVP。我从2002年开始做Windows CE和Windows Mobile的开发工作。

吴澜:大家好,我是成都维动科技的总经理吴澜。维动科技是一家致力于3D手机游戏开发的公司,我们的游戏横跨iOS、Android、WP7和Bada等多个操作系统。

张欣:张欣, 连续六年微软Windows Mobile/Windows Phone Development方向最有价值专家。

李政:小米科技米聊Windows Phone项目组研发经理,曾就职于微软从事教育产品,以及Lync Android版本的开发工作。

InfoQ:目前您所从事的,主要是基于Windows Phone平台在做哪些方面的工作?

马宁:我们目前开发的产品是OpenXLive,一个基于Windows Phone的游戏社交平台,开发者在自己的游戏中嵌入OpenXLive,就可以支持在线积分榜、游戏成就、社交网络、游戏推荐等服务,而且可以将您在游戏中的一些精彩游戏画面共享到社交网络中。对于开发者来说,可以借助OpenXLive的平台进行游戏的交叉推广。目前,OpenXLive是Windows Phone上最大的第三方游戏社交平台。

吴澜:维动作为微软在中国的WP7合作伙伴之一,刚完成了“七星传说”向WP7上移植的工作,该游戏最初运行在iOS和Android平台,深受大家的喜爱,在Q3,大家就会看到我们的新游戏了。

张欣:目前就职于人人网担任高级布道师工作,负责人人网无线业务对外的一些技术市场和技术合作工作。对于Windows Phone来说,我们一直在关注其技术发展方向,相信在Windows Phone 8推出之时我们也会交付出让用户满意的产品。

李政:目前我所从事的工作在Windows Phone平台上包括基于XMPP协议的即时通讯,客户端与服务器端的Web Service的通讯,LBS相关的工作,图像处理方面的工作,以及基于Speex的语音处理工作。

InfoQ:请您简单谈下对近期微软的对于目前Windows Phone开发的举措的看法?

马宁:关于这个问题,我的《Windows Phone 8,我们该怎么玩?》中已经充分表达了我的不满。归结起来是下面几点:

  1. 无视已有用户的利益,不支持现有设备升级Windows Phone 8。
  2. 新开发功能未给我们带来惊喜,都是早就应该解决的问题。
  3. 新的Metro UI背离了原有的设计原则。
  4. 市场部门的尸位素餐造成了Windows Phone 8发布会连最后一点颜面也没保住。

吴澜:我认为WP8的发布会以后,对开发者的影响并不是很大,因为WP8设备可以兼容WP7.5的应用,因此目前在WP7.5上开发的应用可以直接运行在未来的WP8设备上。但对消费者和手机厂商而言,的确是一个不小的冲击。但微软的期望是依靠WP8去挑战iOS和Android,因此WP7不能升级,颇有壮士断腕的豪气,也是不得已之举。

张欣:与其说是举措不如说是“变革”或者是“革命”。变革或者革命都会对现有的环境造成一些影响,甚至是一些破坏性的后果。其后果则要么皆大欢喜要么是一蹶不振。微软的Windows Phone 7的推出在其内部被称之为“Windows Phone Zero”,虽然相对以前的Windows Mobile来说有了翻天覆地的变化但是对于市场的影响力依然不足。想要获得更好的成绩,只有迅速调整方向和策略。Windows Phone 8的变化目前说不上是好还是坏,但是没有变革必定是等待死亡。

李政:微软的Windows Phone 7有点像Vista的地位,WP7本身并不完善,尤其在SDK这方面,不允许使用Native Code,开放的底层API较少,以及SDK 控件库的质量问题。以我对微软SDK多年的使用经验,WP7的SDK能够感觉到微软这个SDK发布的很匆忙,举个列子,控件库中ProgressBar因为性能原因微软官方竟然不推荐使用,推荐使用在codeplex一个开源库中的performanceProgressbar。综上,WP7无论从产品和SDK都很匆忙,质量也不够高,没有办法撑起微软进军移动市场的局面,所以微软不得不做出一个痛苦的决定,抛弃WP7,推出WP8,从而在技术层面上可以撑的起微软以后再整个移动市场上的布局。

InfoQ:这种举措对您或您的公司有多大影响?

马宁:因为我们是游戏相关的服务提供商,所以,Windows Phone 8对于我们的影响,还是较为正面的。好处在于:支持了C++之后,会有更多的游戏开发者愿意进入Windows Phone平台,会增加我们的机会。坏处在于:既要维护Windows Phone 7.x的产品线,还要维护Windows Phone 8的产品线,对于小公司来说,要增加相应的研发成本。

退一万步说,变化对于创业公司来说,是好事。如果没有变化,现有的市场机会被已有的大公司分配殆尽,小公司永远没有出头的机会。而小公司的机会就在于反应比大公司要快,能够在快速变化的市场中险中求胜。所以,对于OpenXLive来说,拥抱变化,Windows Phone 8的升级,机会远远大于挑战。

吴澜:影响不是特别大。

张欣:暂时没有影响。

李政:这个举措对我们公司的影响不大,但也是有一些影响,因为我们要开始考虑在什么时间放弃WP7平台的开发,进而转向WP8。

InfoQ:从开发者的角度来看,基于WP7(Windows CE内核)和WP8(Windows RT)开发,差异性有多大?

马宁:差异性非常大。我曾经参与了Windows CE 6 R3和Windows CE 7的开发,多少了解Windows CE的现状,虽然很多细节还是不能多说,但Windows CE是1996年发布的,专门针对移动设备的操作系统,虽然进行了两次内核更新,到现在,确实有很多过时的地方。

Windows RT是一个全新的Windows内核,也是首个支持ARM的Windows操作系统,如果一旦成功,该操作系统也会成为第一个横跨PC、平板和智能手机的操作系统,可以认为Windows RT是微软未来几年战略的基础,所以对其的期望值是很高的。当然,Windows Phone 8和Windows RT只是共享内核,二者绝对不是一个产品,它们之间的兼容性如何,现在还不知道。

我在微博中强调,我不反对升级内核,毕竟WinRT确实比Windows CE先进很多,但是,我反对的是在升级的同时忽视已有用户的利益。

毕竟身在局外,有一些技术细节要等Windows Phone 8发布之后才知道,如果真的有一些现有硬件无法支持的新功能,Windows Phone 8抛弃已有用户也属于无奈之举,但至少目前公布的信息中没有这方面的信息。

Windows RT内核升级是一个非常大的变化,这种变化大致相当于Windows 98升级到Windows 2000,所以面临的挑战还是非常多的。从目前的产品稳定程度、API层的完成度上来看,Windows RT距离成熟还有相当的一段路要走,如果微软在产品成熟前,强行发布,很可能重演Vista当年的大败局。而且,微软在Windows RT上承载的期望太高,如果一旦Windows RT失败,Windows Phone 8也会失败,造成一个满盘皆输的局面。

吴澜:从维动的游戏开发来看,我们更欢迎WP8,因为WP8可以直接支持Native的开发,而不像WP7必须用C#。C#在移植性和效率上都非常不理想,我们非常期待WP8的发布和商用。

张欣:对于现有的Windows Phone开发者来说,其实影响并不是太大。现在在用XAML加托管做开发的,该技术会无缝延续到Windows Phone 8上;现在用XNA来写游戏的就比较痛苦,因为在Windows Phone 8上游戏的开发微软会推荐使用C++和DirectX的方式。当然,从正面的角度来看增加了Native Code的支持也是一件好事。

李政:我认为,最大的差异就是WP8支持Native Code,这是一个非常非常重要也是意义重大的变化。开发者可以做类似在Windows 上开发的事情,用XAML,C#做界面,底层使用C++代码,很多的软件从Windows上移植到WP8上就非常容易,我所知道到一些开发者,由于在WP7上要用C#重新很多核心库,工作量非常巨大,从而都放弃了WP7这个平台,WP8他们就可以回来了。

对于熟悉WP7开发的开发者来说进行WP8开发不会有什么困难,WP8上仍然支持纯.Net的开发,所有在WP7上的所有开发经验以及核心代码都是可以带过去的。而Native Code的支持又可以把一些要求性能,或者没有C#实现的库用C++来实现,是一件令人非常愉悦的事情。

如果开发者想应用程序同时支持WP8和Windows 8就不能仅仅依靠WP8的向前兼容性,需要把代码相应的迁移到WP8上去,这个过程也不会很痛苦,很多代码是可以直接重用的,但是需要在WP8 和Windows8的SDK环境下重新编译。

InfoQ:对现在的正在从事Windows Phone7.5的开发者有哪些建议?

马宁:抛弃掉已有Windows Phone 7的用户,会成为微软的又一桩罪恶,其实微软从来就不在乎已经到他的平台上来的开发者。但是,作为负责任的开发者,至少在一定的时间段内,要维护Windows Phone 7.8版本,其实Windows Phone7.8版本也是能够运行在Windows Phone 8上的。

对于新应用,我的建议是看量,如果Windows Phone 8的用户量大于Windows Phone 7,我们可以采用Windows Phone 8来开发,否则停留在Windows Phone 7上是一个相对明智的选择。

当然,如果是想占坑、或者新的应用使用了Windows Phone 8的某些新特性,那么不用犹豫,直接用就好了。

吴澜:如果微软承诺的WP8兼容WP7.5可以兑现,那对于做应用的开发者则不用担心,而做游戏开发的朋友需要权衡一下,是否可以等等,直接跳过WP7,进到WP8。

张欣:现有的Windows Phone 7.5程序都可以在Windows Phone 8上运行,所以大家还可以放心的继续开发完善自己的产品。等到Windows Phone 8上的SDK出来后再关注Windows Phone 8相关东西即可。

李政:在7.5平台上开发的同时,应该分出一定的精力来接触WP8的开发,同时规划好一个时间来做应用程序的迁移,迁移之后可以就只对WP7版本进行一些维护,而所有新功能的开发都在新的平台上进行。

InfoQ:如何看待在Windows Phone 7.8的开发?

马宁:如果是Windows Phone 7.5的开发者,恭喜你背上了一个沉重的包袱;如果是新入行的开发者,直接奔Windows Phone 8就好了。

吴澜:7.8目前的信息非常少,相信对于熟练的开发商,不会有太大的技术障碍。

张欣:尚不清楚Windows Phone 7.8的开发技术细节,无法给出建议。当然,我们可以暂时认为它和Windows Phone 7.5一样。

李政:不建议特别为WP7.8做任何开发,针对7.5开发就好了。一方面在7.5的平台上开发的东西都可以在7.8上运行,另一方面针对一个注定要被抛弃的平台做一些特殊的事情没有太大意义。

InfoQ:对未来要从事Windows Phone 8开发的开发者有哪些建议(IAP、企业级特性,游戏开发)?

马宁:以下是我的观点,

  1. 将Windows Phone 8看作一个新的操作系统。其实Windows Phone 8是一个新的操作系统,只是能够兼容Windows Phone 7的部分功能。这次升级并不比Windows Mobile 6.5到Windows Phone 7的变化小。我之前曾经说过,Windows Phone 7其实是1.0版本,现在看起来,我错了,Windows Phone 7充其量是个Preview版,还是Release Preview版,考验RP的版本啊。 

    所以,作为开发者,最好的办法是找到Windows Phone 8的源头——Windows 8 RT,从这里开始我们的新旅程。虽然目前还不知道Windows Phone 8对于WinRT API的支持程度如何,但是开发工具、开发语言、类库都不会脱离WinRT。从以往的经验来看,Windows Phone 8上的WinRT应该是个精简版,目前.NET和C++应该都支持,不过JavaScript支持如何就不知道了。 
     
  2. 支持Windows 8和Windows Phone 8 
    比起Windows Phone 8与Windows Phone 7的缠绵悱恻来,Windows 8与Windows Phone8的关系倒是清晰明朗。所以,如果想兼容Windows 8和Windows Phone 8,问题其实并不大。而移植的挑战可能会出现在UI上,比如,操作方式、分辨率。毕竟Windows 8是横向滚动,Windows Phone上并不适合;而Windows Phone 8设计成那个鬼样子,也跟要解决不同分辨率有关,而Windows 8解决分辨率问题的办法,其实未必适合Windows Phone 8。 
    从Windows 8开始,移植到Windows Phone 8应该是一个较为理想的迁移路径,不过,中间的挑战也不小。我不相信微软能把完整的WinRT API移植到Windows Phone 8上。 
     
  3. 企业级特性 
    Window Phone 8的企业级特征被加强了,Windows Phone 8上的企业级应用可以开始了。如同微软不会做消费者市场一样,苹果不会做企业级市场,所以还有很多企业在用Windows Mobile。将Windows Phone8与Windows 8结合的企业级市场空间还是很大的,不过外设、VPN的问题解决了没有? 
     
  4. 游戏开发 
    这次游戏开发的变化是最大的,终于支持C++了。装配脑袋的分析是最精准的,因为要换内核,如果Windows Phone 7就开放了Native API,到了Windows Phone 8就要重写,那时候引起的波澜会更大。 
    对于游戏开发者来说,DirectX和Havok游戏引擎绝对是利好的消息,毕竟可以在多个平台间统一使用C++来开发游戏了。不过,基于Windows RT的Managed C++移植到其他平台上去,工作量恐怕不比C#小多少。 
    在这里忍不住对XNA的事情发表个评论,虽然对XNA还没有最后的结论,但前景不妙。但用XNA和C#开发休闲类小游戏,要比DirectX容易的多吧?不支持C++的确不对,但你不能因为有了C++,就放弃对XNA的支持吧?

吴澜:WP8有很多想象的空间,比如与Win8设备的直接兼容,就可以开发出很多有趣的游戏。微软的想法是希望借助下一代操作系统打通PC、Phone和TV,给用户一致性的体验。这个广阔的市场需要大量应用去填充。所以大家的思路可以多往这方面去想。

张欣:DirectX相信会给Windows Phone的游戏开发带来有力的支持,而IAP则有机会让开发者赚到更多的钱,所以这两方面应该是普通开发者重点关注的地方。而且企业级特性则是微软以前的拿手好戏,Windows Phone 8上相关内容则为Windows Phone杀入行业/企业市场带来机会。

李政:IAP这个东西对于中小开发者想要通过应用程序赚钱又敞开了一扇大门,很多电子商务类的应用会蓬勃发展,开发者可以在这个上花一些时间跟随这个平台一起成长,相信会有不错的回报。

企业级特性的开发对于个人开发者来说就可以不关注了,毕竟这些东西是要跟企业级的Service等结合使用,单独做一个App产生回报会比较小。

对于在WP8上开发游戏,WP8 推出了DirectX的支持,相信在WP8上的游戏开发体验将非常的友好,而且微软会全力推进WP8,所以我很看好在WP8上开发游戏的回报。 

原文地址:https://www.cnblogs.com/Chrome/p/2575029.html