標籤:4.0 mic voip aml oda flip 語音 grid hone
目前來說Windows phone 8的開發人員 大家都是走戰鬥在在技術朋友,相信大家在做Windows Phone 8開發的同時也在關注Windows 8,我相信很多開發人員一定是在 Windows 8 和 Windows phone 8 上起頭並進的。其實Windows Phone8 這次最重要的一點更新就是 Windows Phone runtime 和我們的windows 8 共用NT核心,我們統稱的 windows runtime 簡稱 WinRT 提供11,000多個members支援Windows 8 然而 我們的Windows Phone runtime 簡稱WinPRT 是WinRT的子集 有2,800多個共用members並且有600多個Windows Phone的特性。(例如:語音,Voip,鎖屏管理等等...) 從我們可以看到由於共用windows核心所以在API層級同樣共用了很多AIP,那麼這樣多的共用API可以為我們的開發帶來怎樣的便利呢,後面我會給大家分別介紹。同時 歡迎大家在這裡和我溝通交流或者在新浪微博上 @王博_Nick
Windows 8和Windows Phone 8共用Windows核心,這意味著開發人員能夠使用常見的編程模型來構建應用程式和遊戲。
從開發成本或者是產品規劃的角度上看,開發人員可以利用相同的代碼/開發語言/開發工具來建立應用程式和遊戲 同時應用在Windows8 和Windows Phone 8從根本上加快開發時間。
這裡肯定會有同學想到WinPRT究竟有哪些特性如何在開發過程中如何判斷一個WinRTAPI或WinPRT的存在呢,並且WinPRT所特有的API有哪些?
這裡我給大家一個MSDN的詳細列表中都可查到:http://msdn.microsoft.com/en-us/library/windows/apps/jj207212(v=vs.105).aspx#BKMK_Understandingthewinrtdocumentation
從中我們可以清楚的看到Windows Phone 8 和 Windows 8 開發過程中可以共用那些部分這裡注意的一點是JavaScript+HTML的開發模式在Windows 8 WinRT的環境下是支援API層級調用的但是在WinPRT的環境下是基於 IE10 Control的,順便這裡提一下windows phone 8 IE10 control 對javascript的運行 尤其是對HTML5 的支援提升很大包還括多點觸摸的支援。
這裡送給大家一張在 TechED 2012 上大家都很喜歡的 Windows Phone API QuickStart Poster (PDF) (當時數量有限沒拿到的同學請在這裡下載 列印出來也很好看)
以及Windows phone8 新功能的詳細介紹:http://msdn.microsoft.com/en-us/library/windows/apps/jj206940(v=vs.105).aspx
其次在實際開發中肯定用到不少系統控制項實際上這些控制項也是十分相似的在做設計的時候有很多共性
從上面的圖中可以看到 windows 8 和 windows phone 8中大部分控制項都是相似的,雖然這些控制項不是完全基於相同的命名空間下 但是對XAML而言寫法和用法都是相同的,所以在設計師進行葉面設計的時候很多控制項UE操作都是相同的,當然windows phone 8中也有一些特有的控制項 例如:Panorama和Pivot就是因為windows phone的使用者使用習慣特有存在的,然而在windows 8中使用者更喜歡使用 GridView 和 FlipView。
這裡我給出MSDN的詳細列表供大家參考 Windows 8 和 Windows Phone 8 中控制項的不同點:http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj735581(v=vs.105).aspx
上面說了這麼多肯定有朋友會問在實際項目中我們怎麼做呢?
1. 拆分UI邏輯使用 MVVM
以前做過Silverlight 或者WPF朋友肯定都多多少少聽說或者使用過MVVM的 pattern,如果恰好你的Windows8 或者 windows phone 項目正好是使用MVVM開發那麼你可以選擇 通過share ViewModel的形式相信可以為你的開發省去不少時間。
這裡給一個相信運作方法:
http://msdn.microsoft.com/en-us/library/windows/apps/jj721615(v=vs.105).aspx
http://msdn.microsoft.com/en-us/library/windows/apps/gg521153(v=vs.105).aspx
2. 使用 Portable Class Libraries
相信看到的朋友已經發現了 ViewModle和Model都放在了一個Portable/common中這裡給大家解釋一下Portable Class Libraries的結構
Portable Class Library 是在VS2012中新的一個類庫模板基於.NET4.0 該類庫作為 silverlight、windows phone、windows 8 以及 Xbox360的子集並且可以運行在以上環境中去,這無疑是可以在不同的平台間共用一些相同商務邏輯,會為開發人員們來來很大的便利。
在使用Portable Class Libraries時有幾點注意
- 只支援Managed 程式碼開發 C# 或者 VB .NET
- 不要使用Conditional compilation
- 不要使用 Windows runtime API
- 不要使用UI 控制項陳列庫
參考 : http://msdn.microsoft.com/en-us/library/windows/apps/jj714086(v=vs.105).aspx
3. 使用Link形式共用代碼檔案
Link的形式在我之前WP7 to WP8的情況下介紹過,這種形式同樣適用於 windows phone 8和 windows 8 之間,做法十分簡單我這裡就不過多介紹了
參考:http://msdn.microsoft.com/en-us/library/windows/apps/jj714082(v=vs.105).aspx
4. 使用Windows Runtime Components
在開發WinRT 或者 WinPRT的應用程式時 少數情況會遇到一些功能沒有向我們正在使用的語言開放介面 這時候就需要Windows Runtime Components來幫忙封裝 並且可以支援所有開發語言的調用
使用Windows Runtime Components的好處
- 可以發揮C++的效能優勢
- 可以支援多用語音的調用
- 支援 Direct3D、Win32 或者Com APIs (這裡是部分的)
- 調用第三方類庫
參考:http://msdn.microsoft.com/en-us/library/windows/apps/jj714080(v=vs.105).aspx
5. 共用 XAML UI
這個功能對於頁面來說可能用的比較少,封裝控制項應該還是比較有用的(個人感覺)
感興趣的同學可以花些時間消化一下:http://channel9.msdn.com/Events/Build/2012/3-043R
參考:http://msdn.microsoft.com/en-us/library/windows/apps/jj714088(v=vs.105).aspx
6. 使用 Conditional compilation 編譯命令
最後這點我也在之前的 WP7 to WP8 中介紹過主要是在共用檔案的時候在不同項目間區分編譯,和Link代碼一起使用
namespace ProjectB{ public class MyClass { public void CommonMethodA() { // code that is common to Windows Phone 8 and Windows 8 } public int CommonMethodB() { int result = 0; // code that is common to Windows Phone 8 and Windows 8 return result; } public void PlatformSpecificMethod() { #if NETFX_CORE // code for Windows 8 #else // code for Windows Phone 8 #endif } }}
Windows Phone 8 與 windows 8 開發技術概覽