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 提供的功能。