Windows Phone 8 與 windows 8 開發技術概覽


目前來說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時有幾點注意

  • 只支持托管代碼開發 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
        }
    }
}

 

參考:http://msdn.microsoft.com/en-us/library/windows/apps/jj714084(v=vs.105).aspx

也可以參考我之前寫的博文:http://www.cnblogs.com/sonic1abc/archive/2012/11/17/2775292.html

歡迎大家在這里和我溝通交流或者在新浪微博上 @王博_Nick

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM