好库网 好库网首页 | 我的好库
微微发软的芒果

文章分类

关于WP8开发者程序开发语言选择倾向的问题

发布者:winphone
发布日期:2012/6/28 14:30:14   更新日期:2012/6/28 17:20:31
阅读次数:3330
评分:4.80
介绍:来自WPXAP网友slice的一篇冷静客观分析Windows Phone 8开发的帖子
正文:

作者:苏扬

 

来自WPXAP网友slice的一篇冷静客观分析Windows Phone 8开发的帖子:

 

基本概念:

 

1.Windows 8有Pro和RT两种版本,Pro采用x86,RT采用ARM。

 

2.x86版本可以运行Metro外还可以运行所有现有的桌面程序(只要没兼容问题),ARM除了运行Metro程序,只能运行微软提供的有限的桌面程序并不允许第三放的桌面程序,例如Windows 8自带的资源管理器、桌面版IE10、桌面版的画图以及桌面版Office。

 

3.跨平台分为两种,一种是写一次,直接可跨平台运行,另一种是移植后才可以运行。

 

4.关于商店,Windows 8 Pro版和RT版都会访问同一个Windows商店,而Windows Phone 7和Windows Phone 8会访问手机版的商店。两个商店是完全独立的,手机商店里面你不会看到任何Windows商店的Metro程序。

 

5.Windows 8的Pro和RT版,能够直接跨平台运行的,只有Metro程序,而且必须是非C++的,也就是C#+XAML或HTML+JS。

 

6.Windows Phone 8的程序,无论如何都需要移植,因为Windows Phone 8的RTP无论多接近RT,它也还是一个缩水版,而且你也不会想要手机和平板是一套界面吧,很多基本软件界面大改基本就是重新开发。

 

7.移植的问题,主要是由语言和API的共通性决定的,silverlight是C#+XAML,语言共通。API的调用方式也相同对于C#,当然WinRT是Native code,siverlight是托管代码,效率有差,但这个差距不要以为很大,例如你要调用silverlight播放一个MP4视频,silverlight也不是自己去播放视频而是调用系统的功能,都是原生的还硬解呢。

 

 

结论:

 

Windows 8会共用一个商店,但你想要你的Metro程序只上架一个就能搞定两者,就不能用C++,如果非要用C++,那么就要为ARM专门移植一份(就算这个移植调整很小甚至只是重新编译一下),然后上架两个软件分别针对X86和ARM额版本,并维护两个版本。

 

Windows Phone 7和Windows Phone 8共用商店,如果要做到两个平台兼容,也就是只维护一个版本同时搞定Windows Phone 7和Windows Phone 8,该用什么方式不言而喻,这个微软当初WP7屏蔽一切CE的一切,死不开放native code,就是为了今天换血后平台的延续性做准备,所以WP8换心后Windows Phone 7可以作为Windows Phone 8的子集继续存在,基础软件仍然共通。

 

如果搞其他,特别是C++,就代表,Windows Phone 7一份,Windows Phone 8一份,Windows 8 Pro一份,Windows 8 RT一份,维护4个版本,要知道Windows Phone 8双核设备距离正式上架发售至少需要半年时间,Windows Phone 88开始销售后Windows Phone 7作为中低端还会销售很长时间。

 

自己衡量,自己那些客户端类软件,有哪一点需要用到C++,何况是managed的C++,大家都是一样的地位去调用WinRT,逻辑没优化好,小心人家HTML+JS都比你流畅,要知道C++做业务逻辑的效率和可维护性时远不如C#。

 

游戏当然没啥好说的,除了小游戏,大型3D游戏一定会迅速抛弃Windows Phone 7。

 

关于性能:

 

其实做网页的人最善于优化加载的逻辑了,这与HTML本身DOM的加载方式有关,而且开发人员优化到位,例如图片要滑到你能看到的地方才用ajax异步加载,这是作为web开发人员所开发绕不开的东西,他们本来就会扣每一点数据的请求和加载,流量啊,习惯异步做完一件事做另外一件。

 

加载逻辑优化最差的,首选只会搭积木的Net程序员,什么MVVM,请求到50条数据,绝对是一次性绑上去显示出来,然后卡你一下,Net程序员经常是1000条数据都不做延迟加载,一次性往列表插,例如很多歌词软件,你进入歌曲列表,100首的都还好,C#的性能还能够承受,如果你歌有1000首,呵呵,你就感觉到了,可悲的是我就是那种手机上1000多首歌的,喜欢存满自己爱听的专辑然后随时都有选择。

 

还有就是Net程序用多线程Easy,进一步造成卡,很典型的就是,搜狐视频这类程序,进入后只要你敢立即滑动页面,会触发该页的请求,然后用户滑动到另外一页,触发了几个页面的请求,这些请求同时进行,本来这几个并行的请求完成后应该先判断用户是否还停留在该页是否还有必要立即往界面中填充数据,还是等用户切换回该页后再往界面填充数据,显然这种基本的逻辑没有做,所以,在你滑动时必须先卡死你一下。C++不了解,不多说,但同时期稳定性较低的一定是C++的程序。

 

最后,大家会发现,最不容易卡的程序,是就语言来说效率最低的HTML+JS,不信大家可以拭目以待。

 

大家都清楚,Windows Phone 7是Windows Phone 8的一个子集,未来会有越来越多的软件不支持Windows Phone 7,特别是新的3D游戏,但也不至于什么开发者全部转向C++之类的,C++不过是一种选择,特别是本身就熟悉C++的开发者,.Net开发者会回过头学C++的不多。为何大家都选择忽视Windows Phone SDK7.x的软件同时支持Windows Phone 7和Windows Phone 8。

 

来源:http://www.wpdang.com/archives/32849.html

 


评论 [发表评论]
账号 密码 还没帐号呢,现在注册一个?

免责声明:好库网所展示的信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。好库网不提供任何保证,并不承担任何法律责任。