開發Windows 8 Metro應用前你要知悉的5件事

evancss發表於2012-10-29

作者:Lee Whitney    翻譯:@evan-css

原文連結:http://blog.slalom.com/2012/05/15/five-things-to-know-before-you-start-developing-windows-8-metro-apps/

作者介紹:李.惠特尼是總部設在德克薩斯州達拉斯的Slalom Consulting公司的一名解決方案架構師。他總是喜歡參與那些具有世界水平成果和和具有極佳使用者體驗的專案。

目前開發Windows 8平板電腦的移動應用程式只有一條途徑,那就是使用新的Metro應用程式框架,這是一個嶄新的事物,與之前的Microsoft開發平臺相比有很大的不同。為Windows 8開發Metro應用程式需要利用你已掌握的技能,但更需要學習新的平臺概念。

以下的5件事,是你在開發Metro應用程式之前必須要了解的,是你深入到新的水域創造讓你名利雙收的第一個偉大的應用程式的精神食糧:

1、現在程式語言將決定你的表示層技術

在此之前,Windows開發人員可以首先選擇一種程式語言(如C#或VB)然後再選擇一種表示層技術(如WinForms或DirectX)等。

然而開發Metro應用程式時,如果你選擇的是C#、VB或C ++,系統會自動選用XAML作為表現層。如果你選擇使用Javascript,你的命運將與HTML5和CSS3聯絡在一起。不可能將C#和HTML5混合使用,也不可能將JavaScript和XAML混在一起。

這種程式語言和表示層技術的耦合增加了為你的專案選擇正確程式語言的重要性。該選用哪個語言很大程度上取決於你的專案優先考慮什麼。

當你想建立可用於多種情景、適用範圍廣的專案時,學習Javascript和HTML5是一個非常值得的投資。例如JavaScript可被用來構建Metro應用程式、HTML頁面、所有的移動裝置的本地應用,甚至是伺服器端應用(如NodeJS)。

C#和XAML的優勢在於,大量的程式設計師已經非常熟悉這些技術。我的感覺是,在類似於Metro的微軟平臺上,為了在專案開工前減少學習基礎知識的時間,越來越多的開發人員將會掌握如何使用XAML來做動畫,而不是CSS3。

選擇你的程式語言的戰略應當基於你現有的技能和你對未來專案的期待。

2.NoSQL被賦予了新的含義

Metro應用程式的一個獨特之處在於它們不能夠很方便地訪問基於SQL的關係型資料儲存。而現有的Microsoft平臺上可以方便地直接訪問關係型資料庫,如SQL Server Express、Compact或CE版本,但目前在Metro沙盒中不是這種情況。

即使你下載並整合了一個開源的SQLite的資料庫,情況也沒有改善。你的應用程式可能由於安全性問題而無法通過(Windows應用商店)的釋出審批。大多數資料庫系統目前還無法在Metro沙盒環境中執行。

那麼,你如何管理在Metro應用程式的資料?當然你可以將資料寫入到檔案系統手動管理,或是使用目前可用的ISAM資料儲存介面(ESE,Jet Blue)。然而,最實用的方法可能是使用一種半結構化(semi-structured)的資料儲存機制。

Metro應用程式可以訪問IE10的本地儲存技術,如索引型資料庫(IndexedDB),這是一個新興的標準。這是一種簡單的本地儲存機制,它使用“鍵/值”這種類似cookie的技術訪問資料。當然,你可以呼叫一個遠端伺服器上Web服務來實現SQL的功能,但這解決不了本地儲存的問題。

雖然你仍然能夠解決問題,但對於程式設計師來說,如何規劃資料管理絕對是一個不同的事情。

3、後臺任務的工作方式不同

在後臺執行程式碼一直以來是存在規則的。而大多數開發人員的直覺是,一旦你啟動一個後臺程式,那麼它將繼續執行,直到你結束它。在Windows 8 中,這種直覺不再是真實的。

在Metro中,在後臺的應用程式不再自動持續地執行。相反,在使用者把它們帶到前臺之前,它們將一直處於掛起狀態。預設情況下,只有前臺Metro應用程式才能夠在任意時間使用CPU資源。這並不是一種倒退,而是一種新的Windows應用程式的行為模式。這種設計是為了最大程度地提高使用者的響應,併為移動裝置節約資源。

這些聽起來很熟悉,因為它非常類似iOS的工作方式。當蘋果公司在iPhone中新增了多工支援時,它僅允許在非常特殊的情況下執行後臺任務,在Windows 8中的Metro應用程式也是如此。Metro應用程式僅可以申請在後臺播放音訊、資料傳輸以及傳送通知的許可權。

這種新的模式主要是由於移動應用的場景,但它同時也是Metro桌面應用程式的模型。

4、不要指望能夠使用.NET的所有功能

我們已經越來越依賴“偉大”的.NET所提供的功能,但在Windows 7中,.NET框架是在Win32 API的基礎上構建的。在Metro下,一切(包括.NET庫)都在新的WinRT API基礎上構建。這裡.NET功能僅僅是Metro完整框架的一個子集。

舉例來說,WCF支援Metro應用程式嗎?是,也不是。核心客戶端方案均支援,但WS系列規範,如WS-Security不被支援。MTOM二進位制附件編碼不被支援。

好訊息是,微軟在選擇功能子集時,仔細考慮瞭如何最大限度發揮其作用。一個實用的建議是,在你選用功能模組之前,仔細檢查它們都支援哪些功能。

5、新的使用者體驗不止是新的控制元件(那麼簡單)

此前新版本的Windows中新增了一些新的控制元件(如視窗小部件),但其核心的使用習慣沒有變化。 (在1985年釋出)的Windows 1.0和Windows 7都具有選單欄、標題欄和可調整大小的應用程式視窗。而Windows 8的Metro應用程式沒有這些東西。即使是在類似Metro風格使用者體驗的Windows Phone 7上也不一樣,它類似全景控制元件(panorama control)的東西Windows 8沒有。我們(所習慣口味)的乳酪已不再有了。

正因如此,我們的工作將包括學習新的Metro使用者使用習慣,這樣我們才能知道他們對我們應用程式的感受。這包括應用條(AppBar),語義放大(Semantic Zoom),半屏對接(Partial Page Docking)以及其它Windows 8獨有的魅力。MSDN社群中有一個獨立的區域,涵蓋了所有這些內容

在你的第一個Metro應用程式中,你可能並不需要所有的這些新的功能特性。但是,如果你不適當的利用這些優勢,你可能無法設計出一個完美的Windows 8應用程式。

Onward and upward

Windows 8的確不單純是技術的更新。上述的每一條,都是讓應用程式更好更快的巨集偉藍圖的一部分。Visual Studio 11是開發Metro應用的主要工具,幸運的是,它仍然沿用了這個地球上最佳開發工具的名號。總的來講,Metro正在召喚我們去創造下一個殺手級移動應用。

相關文章