Windows Phone 7 开发之深入浅出-进阶篇之开发模式
上一部分我们主要讲述了Windows Phone 7 开发环境的搭建,并且带领大家用两种模式做了一个经典程序”Hello WP7”,以便我们对WP7 开发从直观上有一定的认识.这一部分我们将对Windows Phone 7 的开发进行系统的讲解。1. Windows Phone 7 应用程序架构
为了更好的系统的说明Windows Phone 7 应用程序架构,我们从Windows Phone7 的这张架构图说起。
我们会看到,在一个Windows Phone 7程序最底层运行的是.NET Compact Framework,它是Windows Phone程序运行的核心组件。在这层之上是一些通用服务的接口,例如传感器API,位置API,Windows Live服务,网络服务,多媒体等等。再上面一层则是 Silverlight和 XNA所使用的一些独有内容。最上层则是你基于这两种不同架构所编写的应用程序。
从这张图上我们很清楚的可以看出,新一代的WP7 开发只支持托管代码的开发,而不知持C++的开发。
2. Windows Phone 7托管代码是你唯一的选择
对于普通的ISV和开发者来说,托管代码将是开发WP7唯一的选择。你将不能使用C++来编写程序,同时,也不能对已有的native.dll或者系统函数进行P/Invoke调用。也就是说,不要奢望将你的某些代码封装在native.dll里面然后在托管代码里面调用。
3.两种开发模型可以选择
而编写托管代码将有两种方式,一种是编写Silverlight的应用程序,另外一种方式是编写XNA的程序。
这里的Silverlight 程序不同于常规意义上的Silverlight,虽然它是脱胎自Silverlight 3,但是又去掉了一部分不适用于移动设备的特性,同时又加入了一些Silverlight 4的特性或者是针对移动设备的代码。同时,常规概念中咱们所看到的Silverlight程序都是in browser的;但是对于Windows Phone 7上的Silverlight应用程序来说,它们都是out browser的,也就是说脱离浏览器单独运行的。
对于XNA程序来说,对于绝大部分国内的开发者来说或许是个陌生的东西。它是以前微软推出的用来开发XBox上的游戏以及Zune上的应用程序的一套开发工具。很遗憾的是,由于XBox和Zune一直没有正式的进入国内,所以国内的开发真关注这方面的内容的甚少。同样,它也是采用托管代码。它的开发环境是一套基于Visual Studio称之为XNA Game Studio的东西。
4.XNA Game Studio还是 Silverlight?
既然WP7的开发有两种模式,那么摆在开发者面前的第一个问题,就是我们在开发时究竟选择XNA还是Silverlight呢?
选择XNA或是 Silverlight 并不像选择功能列表或是性能指标那么简单。这两种框架是针对不同目标和不同思想而设计的。同时,这两种框架的选择也不会受硬件和规则的限制,也就是说使用哪种框架,更重要的在于开发者,和开发的游戏。
什么时候选择Silverlight?
如果要开发一个已经存在的Xbox 360或是PC游戏程序的伴侣程序(并非游戏本身),或是只是显示一些数据和信息,那么使用Silverlight将是一个最佳的选择。Silverlight 提供给开发者一个带界面的开发环境,开发者可以通过使用拖拽的方式进行控件的布局。而且这些程序将以WP 程序固有的风格显示出来。而使用XNA Game Studio 实现这种效果,则需要去自己生成这些样式。
如果视频只是程序中某页面中的一部分,在屏幕的局部显示(而不是全屏幕),这时必须选择Silverlight。Silverlight中允许使用媒体的控件在应用程序中进行混合排列,而XNA只支持全屏显示,不支持视频混排界面。
同样在程序中如果使用到IE 控件,那么也必须使用Silverlight 模式,因为只有在这种模式下才支持IE 控件。而XNA只支持http(s)协议,不支持IE控件。
如果你的程序需要软键盘输入,那么你应该考试使用Silverlight。该模式默认包括软键盘的操作。而XNA使用则需要自己来创建软键盘。当然这两种模式都支持真时的键盘输入。但是看看当前的WP7手机有多少
有硬键盘呢?(但是如果你真的想在XNA模式下使用软件盘也是可以的 具体请参考http://msdn.microsoft.com/en-us/library/ff827869.aspx )
如果你曾有过Web 程序的开发经验,或者说你正在移植一款游戏,想尽早完成,那么Silverlight将是你不错的选则。
什么时候选择XNA?
如果你的程序符合更新/渲染的循环模式,这时XNA就是你的最佳选择了。如果你的程序来自于Xbox360或是PC游戏,那么XNA更是你最佳的选择了。XNA是针对游戏开发设计的标准框架,它的结构完全适用于游戏产品的开发。
如果你想制作一款真实的3D游戏,那么必须使用XNA。Silverlight 只能通过2D技术来模拟3D效果。
XNA 包括一种管线机制,可以在build时对资源进行处理,而SilverLight则不包含这种机制,需要开发者自己处理资源,以便实现相同的效果。
XNA 可以直接访问硬件来进行图像的渲染,而Silverlight是不能的。同时XNA还可以轻松的控制视频卡的状态,例如:透明度、线框或实体。这些使用的是Direct3D技术,跟在桌面程序上使用Direct3D是一致的。
如果程序中会使用到大量精灵和动画效果,那么XNA 仍旧是你的首选,因为Silverlight 在计算时会占用大量的CPU资源,而XNA会把这种计算放到显示硬件上进行操作。以减少系统开销。
WP7 提供了800*480 的大屏幕,这是一个很高像素的屏幕,许多原有游戏如果不进行重绘,将无法正常显示在屏幕上,XNA提供了基于硬件的高质量拉伸功能。可以使开发者在开发程序时,使用相对小的分辨率,然后在真实设备上按硬件情况进行拉伸。因此,你想更好的进行重绘,可以使用XNA模式。
如上所述, 我对WP7开发的模式选择,做了如下总结:
(1) 开发应用首选SliverLight,游戏首选用XNA
(2) 界面元素固定首选SliverLight,元素变化多首选用XNA
(3) 界面单一用SliverLight,界面华丽用XNA
通过如上所述,我想你应该很明确你的程序要用什么技术了吧?接下来我们会分别将一下这两种模式开发的基本理论,我们还是从常用的SliverLight说起。
页:
[1]