写点什么

开发者谈微软 Windows Phone 8 之变

2012 年 7 月 02 日

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 上开发游戏的回报。

2012 年 7 月 02 日 22:536951
用户头像

发布了 156 篇内容, 共 41.5 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

SpringCloud 微服务实现数据权限控制

Barry的异想世界

SpringCloud SpringBoot 2 权限认证 数据权限

人脸识别门禁系统搭建,智慧小区实施方案

t13823115967

智慧平安小区平台开发

软件测试--数据库基础知识

测试人生路

数据库 软件测试

【吐血整理】超全golang面试题合集+golang学习指南+golang知识图谱+成长路线 一份涵盖大部分golang程序员所需要掌握的核心知识

9號

面试 新手指南 编程之路 职业成长 golang新手

springboot多模块配置问题

原来不悔

springboot Spring Frame

创业失败启示录|校园微生活(故事篇1)

山下青城

创业 28天写作 创业失败启示录 青城

开发效率提升15倍!批流融合实时平台在好未来的应用实践

Apache Flink

流计算 fink

IndexedDB详解

程序那些事

程序那些事 indexedDB webtech 浏览器技术 前端技术

DAPP软件开发|DAPP系统APP开发

开發I852946OIIO

系统开发

写作感悟之无从下笔

JiangX

写作 28天写作

【JS】防止浏览器控制台被直接查看(1)

学习委员

JavaScript 前端 js 28天写作

微软开源WebUI自动化测试神器Playwright​​​​​​​

软测小生

微软 自动化测试 playwright webUI Web自动化测试

SpringCloud 从入门到精通 04---支付模块 02

Felix

公开!阿里甩出“源码阅读指南”,原来源码才是最经典的学习范例

程序员小毕

Java spring 源码 程序员 mybatis

Java 程序经验小结:剖析方法重载

后台技术汇

28天写作

什么是ReadWriteMany?

焱融科技

Kubernetes 云原生 存储 焱融科技 持久化存储

网络请求是如何发送出去的

kof11321

网络

上链DAPP软件开发|上链DAPP系统APP开发

开發I852946OIIO

系统开发

握草,这些研发事故30%我都干过!

小傅哥

Java 小傅哥 28天写作 线上事故 系统秒杀

智能停车管理系统搭建,智慧小区智能化解决方案

t13823115967

智慧小区

Java 并发编程之 JMM & volatile 详解

vivo互联网技术

Java volatile JMM 指令重排序

公安合成作战指挥中心系统开发解决方案,智慧警务平台搭建

WX13823153201

智慧警务平台搭建

架构师 3 期 3 班 -week7- 作业

zbest

作业 week7

十八般武艺玩转GaussDB(DWS)性能调优:SQL改写

华为云开发者社区

数据库 sql 性能优化 GaussDB 算子

一名分布式存储工程师的技能树是怎样的?

焱融科技

分布式 存储 分布式存储 分布式文件

拍乐云语音聊天室SDK,助力非洲版陌陌“Mochat”打造粉丝经济

拍乐云Pano

音视频 RTC 语音聊天室 出海社交 社交泛娱乐

STM32标准库开发实战指南

华为云开发者社区

SMT32处理器 stm32 内核 寄存器

五分钟快速掌握Maven的核心概念

田维常

maven

没人告诉过你更复杂的缓存穿透怎么解决

艾小仙

架构

回顾2020年那些“领域第一本”,每一本都强烈推荐!

博文视点Broadview

从标准到开发,解读基于MOF的应用模型管理

华为云开发者社区

模型 ROMA 应用模型 mof

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

开发者谈微软Windows Phone 8之变-InfoQ