對於GoogleAndroid 4.0 Ice Cream SandWich和微軟WP7.5 Mango在開發技術上作對比,可以看出早期Google學習了Microsoft的WPF的設計方式,由於微軟Windows Phone 7發布緩慢,導致Google在技術上將微軟複雜的設計方式改進,從現在來看安卓冰激淩三明治和微軟WP7芒果來看開發技術上仍然存在著巨大的差異。對於 準備步入移動開發的網友,就目前主流的系統做簡單的分析:
一、UI控制項和設計模式
對於WP7來說,整體控制項數量不如Android豐富和實用,但也有一些創新的地方,比如說樞軸Piovt控制項,在觸控操作上比Android 的TabHost強了很多,但沒有提供類似GridView這樣的控制項在Siliverlight中,由於WP7的UI重新整理機制基於MVVM模式,相對於 Android的MVC有些不同,需要繼承INotifyPropertyChanged介面,通過資料繫結來更新UI控制項的值,相對比較繁瑣。在控制項自 定義方面,WP7可以使用銀光的UserControl或從任何已有的控制項中直接派生,對於Android來說這點基本相同,但提供的方法比如觸控、長按 相關的微軟這點都要 依賴Toolkit來實現,整體相對繁瑣很多。
二、資料庫層
微軟在資料庫方面一直有MS SQL,在手機上有SQL CE這樣的輕量級資料庫,但操作處理方面同樣需要實現INotifyPropertyChanged介面進行更新,修改表,似乎變得更加抽象。同時資料交 換方面微軟還有LINQ,在Web Services方面幾乎和J2EE差不多,但相對於手機上而言Android的SQLite似乎更好用明了,這點微軟確實輸了。
三、系統執行模型
在WP7.5 Mango上支援了多任務,記憶體管理幾乎和Android一模一樣,同時新增了類似iOS上的資料推送,需要微軟伺服器中轉的Push Notification,由於考慮應用隨時被系統記憶體回收,必須儲存每個頁面的資料到持久化的儲存中,比如類似Android的 SharedPreferences而在WP中為銀光的IsolatedStorageSettings,在很多地方微軟都在學習著Google,相比WP7到 WM6的改進來看。
四、圖形系統
這點WP7和Android有著天壤之別,Windows CE下3D為DirectX,2D為GDI方式渲染,而Android下為OpenGL,同時WP7無法使用本地語言開發,導致iPhone和Android程式員在3D方面很是陌生。
五、檔案系統
在WP7芒果上,微軟學習了iOS那樣的封閉,每個應用完全獨立,所以沒有檔案管理工具這個概念,導致了Adobe Reader這樣的應用必須將pdf放入郵箱中,通過郵件附件來開啟閱讀。同樣每個Windows Phone 7芒果手機一般不會有microSD卡,而是機身至少內建8GB或16GB的儲存空間,同樣無法用隨身碟功能,每個應用相對隔離,運行在自己的沙箱空間裡, 對於應用可靠性和安全有了保障,但是對於部分實現方面確實不夠好用。
六、運行流暢度
如果你看見WP7手機運行很流暢,那麼你可能真的錯了,在本質上Java虛擬機器和微軟的.Net Framework執行階段程式庫的底層效率差不多,但Android的手機一般運行著更複雜的案頭,比如左右N個主屏和一堆appWidget小外掛程式,而微軟 似乎Windows Phone 7的應用一般限制在5個同時工作的,否則將會被結束任務,同時由於部分低價Android裝置,導致整體硬體設定偏低,比如有ARM11的CPU,RAM 只有256MB的情況,而微軟WP7第一代手機至少配備了A8 1GHz的處理器,512MB的RAM,第二代的WP7 Mango手機配備了1.4GHz新一代高通Snapdragon,比如8X55系列,所以很多地方了看WP7更流暢,但其實從單個應用來看,WP7應用 的啟動速度遠不如Android平台上的應用,所以微軟甚至設計出了這樣的圖片為每個預設工程提供一個載入圖片。如果是微軟系統內建的應用由於可以調用本 地的方法相對於第三方的Windows Phone應用來說啟動會快很多。
最終結論是Android123仍然推薦大家在高效和開放的Google提供的平台開發,至少不會束縛你的 想象力和實現速度,微軟設計了很多限制和門檻,同時不開源在分析和實現上都會產生很多問題,至少Android的SDK可以工作在Mac OS、Windows各個平台和Linux上,而微軟似乎將WP7 SDK鎖定在Vista和Win7上。