Microsoft 最新推出的Windows Phone 7 智慧型手机主要的诉求对象不止是一般的普罗大众,还包括为数众多的企业用户,所以在软体支援方面加入了对云端服务的支援。图1所示即为Windows Phone 7 的软体支援,上方显示的是Runtime 和工具,下方显示的是云端相关的服务,两者构成开发Windows Phone 7 应用程式的支援,以及应用程式执行时期的支援。
图1:Windows Phone 7 的软体支援
在支援Windows Phone 7 应用程式开发的Framework 方面,Windows Phone 7 提供了两种Framework,分别是Silverlight Framework 与XNA Framework。 Silverlight Framework 是以XAML 文件为基础的应用程式设计概念,透过事件驱动机制的帮助,提供与开发Windows 应用程式和Silverlight 应用程式相同的程式开发体验。 XNA Framework 主要的目的则是用来支援以回圈为基础的游戏程式,意即利用回圈不断地更新画面显示的内容,显示流畅的游戏效果。
Silverlight Framework 和XNA Framework 都是架构在NET 平台上的应用程式开发架构,能够有效率地协助程式设计师发展安全的智慧型手机应用程式,而且程式设计师只要稍微修改现有的Silverlight 应用程式或XNA 应用程式,例如修改萤幕的高度和宽度,并加入智慧型手机特有的感测器相关的功能,就可以将Silverlight 应用程式或XNA 应用程式移植到Windows Phone 7 上执行。
使用Silverlight Framework 来开发Windows Phone 7 应用程式类似设计Silverlight 应用程式,以Silverlight Framework 为基础的Windows Phone 7 应用程式是由一堆的Page (继承自PhoneApplicationPage 类别的衍生类别) 组成的,每一个Page 是一个副档名为.XAML 的文件,代表一个操作画面,程式设计师可以利用Visual Studio 2010 Express for Windows Phone 或是Expression Blend for Windows Phone 来设计Page 的使用者介面。XNA Framework 和Silverlight Framework 不一样的地方在于XNA Framework 主要的用途在支援开发游戏程式,提供2D/3D 的动画,音效,及各种游戏相关的功能,协助有志于开发游戏程式的企业或个人发展Windows Phone 、Xbox 360、Zune 播放器、以及Windows 7 平台的游戏程式。 XNA Framework 和Silverlight Framework 不一样的地方在于XNA Framework 主要的用途在支援开发游戏程式,提供2D/3D 的动画,音效,及各种游戏相关的功能,协助有志于开发游戏程式的企业或个人发展Windows Phone 、Xbox 360、Zune 播放器、以及Windows 7 平台的游戏程式。
在支援应用程式开发方面,程式设计师可以利用Framework 提供的功能控制Windows Phone 7 的多点触控萤幕,感测器,音效装置,以及麦克风等硬体,或是播放声音与影片。
在档案处理方面Windows Phone 7 应用程式只能存取位于隔离储存区(Isolated Storage) 中的档案,无法存取隔离储存区以外的任何档案,避免恶意程式危害到其他应用程式或Windows Phone 7 本身的运作。
Windows Phone 7 支援的Location 功能可以和云端服务提供的Location 服务整合,协助应用程式查询装置的实际位置,在装置位置改变时得到通知,判断装置移动的方向和速度,或是计算两点之间的距离。
支援上述种种功能的底层是一组功能完整的Framework,如图2 所示,位于最底层的Common Base Class Library 提供了Microsoft .NET 平台的基本功能,也是Silverlight Framework 与XNA Framework 的基础。
图2:支持开发Windows Phone 7 应用程式的Framework图2:支持开发Windows Phone 7 应用程式的Framework
除了内建在Windows Phone 7 智慧型手机的Framework 以外,Windows Phone 7 应用程式也可以使用到网际网路的云端服务,包括Windows Azure、Xbox LIVE 服务、Notification 服务、Location 服务、以及其他各种协力厂商提供的Web 服务和WCF 服务,甚至是REST 服务(Representational State Transfer) 等先进的技术,为Windows Phone 7 应用程式提供更丰富的功能支持。透过云端服务的帮助,能够让使用者在使用不同的电脑装置时都可以存取到共同的资料,享受相同的服务,是支持发展新一代的行动运算解决方案的重要基础。透过云端服务的帮助,程式设计师不但能够使用到超越Windows Phone 7 本身内建的功能以外的更多功能,而且云端服务是24 小时不间断的服务,不会因为智慧型手机的电池电力耗尽而无法取得服务。
Microsoft 提供的云端服务中,Notification 服务能够协助Windows Phone 7 应用程式以订阅的方式收到欲处理的事件,节省定时询问特定的资料或状态耗费的电力。 Location 服务能够利用Wi-Fi、Cellular、和GPS 等资料,为Windows Phone 7 应用程式提供定位相关的功能。另外,Identity 服务能够提供身份验证功能,Feed 服务能够提供资料喂入服务,Social 服务能够提供社群服务,而Map 服务则可以提供地图与导览服务。Windows Phone 7 应用程式开发完成后,程式设计师可以利用Portal 服务将开发好的应用程式发布到手机线上软体商店(即Marketplace),让使用者购买和使用。
了解了Windows Phone 7 的硬体支持和软体支持之后,在建立Windows Phone 7 应用程式专案的时候,程式设计师必须面对选取Silverlight Framework 或选取XNA Framework 做为应用程式开发基础的抉择。从图3 所示的Framework 架构功能图可以看出,Silverlight Framework 与XNA Framework 的底层是一组共同的服务,提供感测器相关的功能,Location 功能,Live 服务功能,网路通讯功能,XNA 的音效API,以及XNA 的媒体API,而位于这一组共用服务底下的则是.NET Compact Framework,由.NET Compact Framework 提供基础程式开发协助,包括资料型态,XML 文件处理,LINQ 语言整合查询, Isolated Storage 隔离储存区,WCF 服务,与序列化等功能。
图3:Silverlight Framework 与XNA Framework 的架构与功能
从图3 可以看出Silverlight Framework 和XNA Framework 具有相同的本质,差别在于Silverlight Framework 和XNA Framework 支持的是不同类型的应用程式。Silverlight Framework 支持开发一般的Windows Phone 7 应用程式,提供程式设计师设计应用程式需要的控制项以及显示功能,当然也支持动画功能供应用程式使用,而XNA Framework 主要的用途是支持程式设计师设计游戏相关的程式,包括画面连续更新显示的协助,Content Pipeline 游戏内容处理功能,以及2D/3D 的图形显示。
XNA Framework 的Content Pipeline 是一种制作游戏内容(包括Texture、Sprite、Mesh、Effect、Font、Music、音效、Level 设定、和角色的特质)的功能,协助程式设计师在游戏设计的阶段准备游戏程式执行时期需要用到的所有游戏内容,避免游戏程式执行的时候为了将各种不同的资料格式转换成游戏支持的内容格式而影响游戏执行的速度。
图4 所示即为XNA 的Content Pipeline 功能处理游戏内容的过程:
图4:XNA Content Pipeline 功能处理游戏内容的过程
由图4 的内容可以看出,不同格式的游戏内容格式经由Importer 汇入之后,会转换成Content DOM (Document Object Model) 能够表示的物件格式,也就是Processor 能够处理的格式,Content DOM 表示的物件经由Processor 处理之后,透过Content Compiler 编译成.XNB (XNA Binary File 的缩写) 格式的内容,以便被Windows、Xbox 360、或Windows Phone 7 平台中执行的游戏载入使用。
XNA 的Content Pipeline 功能允许程式设计师扩充其内建的功能,以处理新兴的游戏内容格式,或是产出自订的输出格式。 XNA 的Content Pipeline 功能允许程式设计师扩充其内建的功能,以处理新兴的游戏内容格式,或是产出自订的输出格式。
表1 列有Silverlight Framework 和XNA Framework 的功能特性以及适用的应用程式类型:
选择开发Windows Phone 7 应用程式欲使用的Framework 之后并未限制应用程式不能使用另外的Framework 提供的功能,也就是说选择Silverlight Framework 做为应用程式发展基础的应用程式还是能够透过参考组件的方式使用到XNA Framework 提供的功能,反之,选择XNA Framework 做为应用程式发展基础的应用程式也同样能够透过参考组件的方式使用到Silverlight Framework 提供的功能。