標籤:http io 使用 java ar 檔案 資料 sp on
1.2.2 Windows Phone 8.1應用程式模型
Windows Phone 8.1支援多種開發語言來開發應用程式,包括C#、VB、JavaScript和C++,那麼本書的代碼主要是採用C#語言來開發,部分章節採用C++。從Windows Phone 8.1開始,如果是開發普通的應用程式可以選擇的應用程式模型有:C#/XAML、VB/XAML、C++/XAML和JavaScript /HTML5。遊戲開發還是採用C++的DirectX的架構。在Windows Phone 8之前如果是開發普通的應用程式,只能夠採用C#/XAML和VB/XAML這兩種開發模型,而在Windows Phone 8.1之後新增了C++/XAML和JavaScript /HTML5這兩種開發模型的支援。C#/XAML、VB/XAML和C++/XAML這三種開發模型其實是類似的技術架構,它們都是使用XAML作為介面的程式設計語言,然後使用C#/ VB/ C++作為背景開發語言,注意這裡的C++是指C++/CX文法的C++,是屬於Visual C++ 組件擴充的擴充文法,對於C++/CX更加詳細的介紹和講解可以參考第22章。那麼JavaScript /HTML5的開發模型則是使用HTML5作為介面的開發語言,JavaScript作為背景開發語言。同時在Windows Phone 8.1裡面提供了Windows運行時組件來給各種不同的程式設計語言來共用代碼,比如用C++實現的代碼或者封裝的功能,可以通過Windows運行時組件的方式給C#/XAML模型的應用程式來調用,或者也可以給JavaScript /HTML5模型的應用程式來調用。所在在這些不同的編程模型裡面Windows運行時組件會作為一種媒介來實現跨程式設計語言的代碼共用。
那麼對於Windows Phone 8.1所採用的多種應用程式模型,開發人員應該如何去選擇應用程式的開發模型呢?微軟給出的建議了,開發人員應該選擇自己所熟悉的開發語言來進行開發。如果從應用程式效能的角度去比較,採用XAML(C#、VB和C++)模型的效能會比HTML5的效能高一些。那麼對於C#、VB和C++三種程式設計語言來說在Windows Phone 8.1上面實現的效率是差不多的,因為即使是C++也是採用C++/CX文法來調用Windows運行時的API,Windows運行時的架構則是微軟統一採用C/C++語言來封裝的。採用C#語言來調用的Windows運行時架構和採用C++調用的是一樣的。那麼如果你採用標準C++所實現的演算法或者圖形處理等這些公用的邏輯,肯定是C++的效率更高,不過這種情況C#、VB和JavaScript的應用程式一樣也可以通過Windows運行時組件來調用標準C++封裝的這些公用的代碼。
在Windows Phone 7、7.5和8.0的時候,Windows Phone是只支援C#/XAML和VB/XAML這兩種應用程式開發模式的,同時WPF和Silverlight這兩種技術也是只支援C#/XAML和VB/XAML的開發模式,而大部分的開發人員都是選擇C#/XAML來進行開發,所以目前所C#/XAML這種開發模式所積累下來的技術知識非常豐富,也是Windows Phone開發裡面最受歡迎的開發模型。
1.2.3 Windows Phone 8.1和Silverlight 8.1的區別
那麼在上面所講的開發架構都是屬於Windows Phone 8.1的應用程式,這是完全基於Windows運行時架構下的應用程式開發模型,那麼除此之外我們還可以建立一種應用程式叫做Windows Phone Silverlight 8.1的應用程式。那麼首先瞭解一下為什麼需要有Windows Phone Silverlight 8.1這種模式的應用程式,其實Windows Phone Silverlight 8.1這種模式的應用程式是為了相容目前的Windows Phone 8的代碼方便升級,並且Windows Phone Silverlight 8.1的應用程式會全面支援Windows Phone 8原來的API和功能,注意Windows Phone 8.1的API對Windows Phone 8的API實現了很大的修改,下一小節我們會介紹這種差異。同時Windows Phone Silverlight 8.1的應用程式也會支援部分在Windows Phone 8.1中新增的API和功能。由此可以看出來,Windows Phone Silverlight 8.1項目只是為了暫時相容目前的Windows Phone 8的代碼方便升級,而Windows Phone 8.1的應用開發模式則是Windows Phone未來的發展方向,並且進一步和Windows 8.1的開發模式融合起來。所以本書所有的代碼和講解都是針對Windows Phone 8.1的應用程式的,而不是Windows Phone Silverlight 8.1的應用程式。
1.2.4 Windows Phone 8.1和8.0的API 差異
Windows Phone 8的UI架構是基於Silverlight 4.0來進行開發的,應用程式的開發架構是基於.NET Framework和一個精簡版的Windows運行時架構,而Windows Phone 8.1的應用程式則是完全基於Windows運行時架構的應用程式,所使用的Windows運行時架構是和在Windows 8 / 8.1平台上開發Windows Store的應用程式是統一的架構。Windows Phone 8.1和Windows Store的應用程式都是使用的Windows運行時的UI架構,所以在應用程式裡面也可以在Windows Phone 8.1和Windows Store的應用程式之間來共用XAML的UI代碼,包括模板、控制項、頁面等等。下面我們再來看一下,Windows Phone 8.1和8.0的API 有哪些主要的變化和差異:
(1)8.0的XAML控制項是在System.Windows.Controls空間下,而8.1的XAML控制項都是在Windows.UI.Xaml命名空間下。
(2)8.0的應用程式欄為AppBarButtons,而8.1的為CommandBar。
(3)8.1增加了ListView 和GridView清單控制項, 8.0的LongListSelector控制項在8.1修改為SemanticZoom。
(4)8.0的Panorama控制項在8.1修改為 Hub控制項。
(5)8.0 的頁面基類PhoneApplicationPage類在8.1修改為Page類。
(6)8.1不再支援RadialGradientBrush畫刷。
(7)8.1的Windows.UI.Xaml.UIElement.Clip 屬性只支援RectangleGeometry類型的幾何圖形,其他的幾何圖形均不支援。
(8)8.0的彈窗控制項MessageBox 在8.1裡面修改為MessageDialog,並且是非同步呼叫的模式。
(9)8.0的頁面導航方式NavigationService.Navigate(Uri source[, object navigationState])在8.1修改為this.Frame.Navigate(typeof(AboutPage));
(10)在8.1中取消了8.0的WebClient類的Http編程,增加了HttpClient類。
(11)對於XAML中命名空間的引用,有文法“clr-namespace”改為“using”。
(12)8.1取消了8.0中的啟動器和選取器的API,可以使用Windows.System.Launcher來實現部分的功能。
(13)8.1重新修改了8.0中的語音API。
(14)8.1重新修改了8.0中的地理位置API,並增加了地理柵欄相關的功能。
(15)8.1不再支援本機資料庫SQL Server CE的使用。
(16)8.1不再支援隔離儲存區 (Isolated Storage)的API,取而代之的只能使用應用檔案和應用設定的API。
(17)8.1的背景工作編程採用新的API和機制,原來8.0的背景工作API和運行機制都取消了。
(18)8.1的推播通知編程和API也和8.0的不同。
(19)8.1的Toast通知、磁貼通知、磁貼的實現和8.0的也不同。
(20)大部分在8.0中所支援的.NET API(非Windows運行時的API)在8.1中都不再支援。
本文來源於《深入淺出Windows Phone 8.1 應用開發》
原始碼下載:http://vdisk.weibo.com/s/zt_pyrfNHb99O
歡迎關注我的微博@WP林政 公眾號:wp開發(號:wpkaifa)
WP8.1技術交流群:372552293
[深入淺出WP8.1(Runtime)]Windows Phone 8.1和Silverlight 8.1的區別