日期:2014-05-16  浏览次数:20817 次

Windows Phone 入门教程之学习Windows Phone能做什么?

目前Windows Phone已成为第三大智能手机操作系统,学习Windows Phone开发的人也逐渐多了起来,并且随着Windows 8及后继版本的普及,.NET用得也会越来越多。那么学习Windows Phone仅仅只能做Windows Phone平台的开发吗?以下是我个人的一些观点。


一、框架

1.Windows Phone基本应用程序

Windows Phone的普通应用程序最早继承自Silverlight,Silverlight是类似Flash(以及后继的Flex)等用于实现RIA(Rich Internet Application)的一种Web开发技术,但Silverlight for Windows Phone 有很多特性和真正意义上的Silverlight并不一样,如图所示,虽然Silverlight和Silverligth for Windows Phone有很大一部分相交的部分,但Silverlight for Windows Phone并不完全是Silverlight的子集。


而它们和WPF(Windows Presentation Foundation)的关系则是:而者皆为WPF的子集,几乎所有的内容在WPF都能体现出来,且有相对应的实现方法,如下图所示


再来看看Windows Phone和Windows 8/8.1(Metro UI或Modern UI)程序的基本对比,它们的控件风格和布局风格都极为相似,可以认为是微软统一手机、平板甚至PC操作系统的基础,关系如下图所示


为什么这样划分呢,首先,四者在程序设计上全部采用了前台XAML+后台C#的模式,架构极为统一,设计模式相同,且在XAML代码中,很常见的都引用了WPF的命名空间,所以在布局上的XAML必然是从WPF继承来的,而后台的逻辑在C#上就更是相似,多为事件的绑定操作。四者都可以使用MVVM的开发模式,这种自MVP+MVC模式演变而来的开发模式能带来更佳的开发体验和用户体验,是微软目前非常推崇的一种模式。再者,四者也都可以使用Blend进行界面上的设计,方便了界面设计人员。

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

所以说,掌握了Windows Phone的开发,也就是掌握了MVVM开发模式以及XAML设计模式,而Windows Phone中大多数操作为异步方式,但实现同步方式的编程就更为容易,所以异步编程也可以说是掌握了。如果说Silverlight现在逐渐被抛弃,那么掌握了Windows Phone的开发,上手WPF也就不在话下,只需要去了解更多的类库使用方法和WPF上的更多的特性、功能,而Windows 8的开发入门也相当轻松,但Windows 8的开发展现了一种全新的模式,一些方法和类库使用形式截然不同,但基本模式类似Windows Phone,异步编程的实现也更为容易和稳定。


2.Windows Phone 游戏

Windows Phone 8的游戏开发支持DirectX 3D和XNA Framework,比起Windows Phone 7更强大、更容易。和其他平台相比,DirectX 3D比起OpenGL优化更好,效果更炫,开发也更容易,主流的PC游戏大多数是用了DirectX 9的引擎(目前Windows操作系统支持到11),在一些极为发烧的游戏上DirectX平台远比OpenGL具有优势,除了能提供更牛叉的效果以外,AMD、NVIDIA等显卡厂商也针对其有相应的优化。而Windows Phone、Windows 平板、PC、XBOX游戏机、甚至是Windows PC等都采用DirectX引擎,利用WPF开发的桌面程序也可以直接调用DirectX类库,其布局模式——XAML的效果渲染也是通过DirectX引擎实现。


同时,DirectX 3D的开发使用了C/C++语言,便于从其他的平台(如iOS、Android等)移植游戏。微软在Windows Phone 8发布会上就进行了展示,从iOS移植一款游戏到Windows Phone/Windows 8平台几乎不需要修改代码,就可以实现,而且具有良好的用户体验。目前很多移动游戏公司,如Gameloft、EA等已逐渐做到iOS、Android、Windows Phone、XBOX游戏机、Windows 8同时上线,可见Windows Phone上的游戏开发已经逐渐被开发者所接受,并且开发难度在降低。

所以,如果掌握了Windows Phone平台的游戏开发,尤其是使用DirectX引擎,将对不止所有微软平台的游戏开发受益,甚至可以从事使用OpenGL引擎的平台的游戏开发!


二、编程语言

目前构建在微软平台上的所有应用都有一个特点——越来越多的使用.NET。包括C++ MFC/ALT/STL等非托管语言,都在向C++.NET或者干脆使用.NET来进行开发,有些游戏、专业软件要求安装.NET Framework……Windows Phone当然不能例外,完全基于微软的.NET平台,由于Windows Phone 7是在.NET 4.0的时代推出的,所以Windows Phone应该是在.NET Framework 4.0的平台上构建出来的。

我们都知道.NET编程的核心语言是C#,当然另外一个可以用的就是微软一直在发展的VB.NET,所以C#自然而然成为现在学习.NET的必经之路。而C#又能干什么呢?Windows Form、Windows Presentation Foundation、Silverlight、ASP.NET(Web Form和MVC、Web Service)、Windows Communication Foundation、Windows Azure、Windows 8、Windows Phone、Office插件、XNA游戏……实在太多了!虽然有不同的架构,但是业务逻辑层的编程必须使用C#。

目前,C#甚至可以利用Mono等开源类库,来构建Android、iOS应用程序,或者Linux等类Unix系统上的应用程序,虽然Mono比起.NET Framework还差得比较远,但是从微软对开源社区的贡献和ASP.NET的逐步开源来看,.NET平台和C#语言前景良好。

除了一般应用程序,C++开发游戏可谓是实现跨平台的设计,HTML5+JS+CSS3开发HTML5应用程序加上目前性能强劲的IE10,可以说在以WebKit做为内核的浏览器上基本不用修改代码,便可直接使用,方便了各平台间的相互移植。


三、编程思想

Android和Windows Phone的开发有着很多相似的地方,Windows Phone更微软化,上手也更容易、更人性化,而Android更开源化、自由化。但两者在一定程度上的开发思想非常相似,除了Android使用类似iOS的以应用呈现为主的展示模式,而Windows Phone使用特有的Metro UI(Modern UI)并以消息呈现为主。甚至说Java和C#两种语言都是非常相似的,如果有了Windows Phone的开发经验,想要转行Android非常容易。