XNA还是Silverlight : 哪种才是适合我的?
当很多开发人员决定为Windows Phone 7开发一个应用, 所面对的第一个问题就是在两种应用开发模型中应选择哪一种。开发人员既可以使用XNA框架来开发应用,也可以用Silverlight。 这篇文章将会帮助开发人员来决定该用哪种模式才是最适合的。
其实,在Silverlight和XNA之间做出选择并不是那么简单,你不能仅仅通过罗列出两者所支持的功能来决定。两种框架是分别为了不同的目标和使用者设计的。所以并没有非常强硬的明确的规定来说你必须使用这个框架,而不是那种。然而,我们会为你提供向导和线索,让你知道哪种框架能使你的产品更成功。基本上,最适合你的框架取决去你和你的产品的工作方式。
谁应该使用Silverlight?
如果你想开发一个Windows Phone应用,同时又能应用在已有的XBOX 360和PC上,主要用来显示一个报表和其他信息,那么Silverlight将会是一个很好的选择。Silverlight可以让开发者在开发Windows Phone应用中使用内建的界面控件。这些界面控件可以很好的兼容自己的外观,融入于Window Phone的界面,并不需要在你的应用中做自定义的修改。而如果一个XNA开发人员希望能让他的控件能融合入Windows Phone的界面中,他就需要绘制控件,并自己维护它们。
如果影像是你的应用的关键,而你又希望只在一小部分中播发影像(相对于全屏播放),那么就应该使用Silverlight. Silverlight允许你直接使用多媒体控件来播发影像,并设置控件的大小、位置等。而在另一方面,XNA必须全屏播发影像,不能在屏幕的一小部分来播放影像,合成屏幕。
同样的,Silverlight 可以提供了内建的Internet Explorer(IE)控件来显示网页。Silverlight 应用能够来管理IE控件,并把它们组合进你的界面。XNA可以使用Http(s)请求,但是不能使用IE控件。
如果你的应用还希望得到键盘的支持,那你也应该考虑使用Silverlight. Silverlight应用默认就支持软键盘。而XNA开发则需要自己的软键盘来支持键盘输入。Silverlight和XNA都可以支持普通硬件键盘的输入,而Windows Phone 7可以支持硬件键盘,但是必须注意的是不是所有的Windows Phone 7手机都会安装硬件键盘。
如果你曾经有在其他web技术上做过开发,那么这些经验会对你开发Silverlight应用非常有用,减少你的学习和开发时间。如果你想移植一个已有的应用,使用Silverlight将比你使用XNA开发快很多。
谁应该使用XNA?
如果你习惯于标准的循环更新/渲染流程(Update/Render loop)来开发你的应用,那么XNA开发能适合你。如果你以后是开发Xbox 360或者PC游戏的,那么你会更习惯于XNA 的开发模型。XNA框架是为了游戏开发者来开发游戏的。所以,所有的框架中构建和对象都是为了开发游戏而设计的。
如果你想开发一个3D游戏,那么XNA框架是必须的。Silverlight在Windows Phone上可以模拟3D,不过还是在渲染2D的对象,加上预置的动画。而XNA框架支持全3D,包括对皮肤的支持。
XNA框架可以访问XNA多管道内容项目,它允许在编译时处理需要的元素。Silverlight就没有类似的功能。一个Silverlight开发者需要自己从零开始开发这样的功能。
XNA框架还可以在Windows Phone 7中使用一系列的库类,包括硬件加速、顶点和像素阴影。而Silverlight就不能访问Windows Phone 7中的阴影。XNA框架还取得了视屏卡的控制,允许开发人员照他们的想法来渲染图像。包括aplha通量,金属和固态,等等。Windows Phone 7的视屏驱动是基于Direct3D开发的,基本等同于PC中的Direct3D.
如果你的应用需要大量的元素和动画,使用XNA框架会更有效率。Silveright基本都在CPU上进行运算,而XNA框架可以利用图像卡来帮助运算。用另一种话来说,如果你的界面每一帧都会改变,那么XNA框架更适合你。
Windows Phone 7手机拥有一个800*480的屏幕。这已经是很多的像素点。很多应用都陷入了性能问题,当它们画了太多东西。XNA框架拥有高性能的硬件配置,它将允许应用开发者来渲染很小的目标,还可为不同的硬件来渲染,去应对不同手机的不同分辨率。如果你想使用post-processing,或者你希望你能透支很多的性能,那么使用XNA框架吧。
原文出处:
http://create.msdn.com/en-US/education/catalog/article/which_product_for_windows_phone