從 Windows Phone Silverlight 移到 UWP
如果您是具有 Windows Phone Silverlight 應用程式的開發人員,則可以在移至 Windows 10 時充分利用技能集和原始程式碼。 使用 Windows 10,您可以建立通用 Windows 平台 (UWP) 應用程式,這是單一應用程式套件,您的客戶可以將其安裝到各種裝置上。 有關 Windows 10、UWP 應用程式的更多背景資訊,以及我們將在本移植指南中提到的調適型程式碼和調適型 UI 的概念,請參閱 通用 Windows 平台 (UWP) 應用程式指南。
當您將 Windows Phone Silverlight 應用程式移植到 Windows 10 應用程式時,您將能夠趕上 Windows Phone 8.1 中引入的行動功能,更能使用通用 Windows 平台 (UWP),該平台的應用程式模型和 UI 架構在所有 Windows 10 裝置上皆可使用。 這讓您可透過一個程式碼庫和一個應用程式套件來支援桌上型電腦、平板電腦、手機和大量其他類型的裝置。 這將增加您應用程式的潛在受眾,並透過分享數據、購買消費性產品等來創造新的可能性。 如需新功能的詳細資訊,請參閱 Windows 10 中為開發人員提供的新增功能。
如果您願意,可以將應用程式的 Windows Phone Silverlight 版本和 Windows 10 版本同時提供給客戶。
注意 本指南旨在協助您手動將 Windows Phone Silverlight 應用程式移植到 Windows 10。 除了使用本指南中的資訊來移植您的應用程式之外,您還可以試用 Mobilize.NET Silverlight Bridge 的開發人員預覽版來協助進行自動化移植流程。 此工具可分析您應用程式的原始程式碼,並將對 Windows Phone Silverlight 控制項和 API 的參考轉換為其 UWP 對應項。 由於該工具仍處於開發人員預覽版階段,因此尚不能處理所有轉換情境。 但使用此工具應該能替大多數開發人員節省一些時間和精力。 若要嘗試開發人員預覽版,請瀏覽 Mobilize.NET 的網站。
XAML 和 .NET 或 HTML?
Windows Phone Silverlight 具有以 Silverlight 4.0 為基礎的 XAML UI 架構,您可以針對 .NET Framework 版本和一小部分的 Windows 執行階段 API 進行程式設計。 由於您在 Windows Phone Silverlight 應用程式中使用了可擴充應用程式標記語言(XAML),因此您的 Windows 10 版本很可能會選擇使用 XAML,因為您的大部分知識和經驗都會轉移,您使用的大部分原始程式碼和軟體模式也會轉移。 甚至您的 UI 標記和設計也可以輕鬆移植。 您會發現受控 API、XAML 標記、UI 架構和工具都熟悉地令人安心,而且您可以在 UWP 應用程式中,將 C++、C# 或 Visual Basic 與 XAML 搭配使用。 整個程序可能會簡單到令您驚訝,即便過程中可能會遇到一或兩個挑戰。
請參閱使用 C# 或 Visual Basic 的通用 Windows 平台 (UWP) 應用程式的藍圖。
注意 Windows 10 支援的 .NET Framework 功能遠多於 Windows Phone Store 應用程式。 例如,Windows 10 具有多個 System.ServiceModel.* 命名空間,以及 System.Net、System.Net.NetworkInformation 和 System.Net.Sockets。 因此,現在非常適合移植 Windows Phone Silverlight,並讓 .NET 程式碼在新平台上編譯和運作。 請參閱命名空間和類別對應。 另一個將現有 .NET 原始程式碼重新編譯為 Windows 10 應用程式的重要原因是,您將能享受到 .NET Native 的好處,這是一種提前編譯技術,可將 MSIL 轉換為原生可執行的機器程式碼。 .NET 原生應用程式啟動速度較快、使用較少的記憶體,且使用比 MSIL 對應項目更少的電力。
本移植指南將重點介紹 XAML,但您也可以使用 JavaScript、階層式樣式表 (CSS) 和 HTML5 以及 Windows Library for JavaScript 來建立功能相當的應用程式 (呼叫許多相同的 Windows 執行階段 API)。 儘管 XAML 和 HTML 的 Windows 執行階段 UI 架構不同,但無論您選擇哪一種,都可以在所有 Windows 裝置上使用。
針對通用或行動裝置系列
您可以選擇將應用程式移植到面向通用裝置系列的應用程式。 如此一來,該應用程式可以安裝到最多種裝置上。 如果您應用程式呼叫的 API 僅在行動裝置系列中實作,那麼您可以使用調適型程式碼保護這些呼叫。 或者,您可以選擇將應用程式移植到面向行動裝置系列的應用程式,在這種情況下,您無需編寫調適型程式碼。
讓您的應用程式適應多種外形規格
您在先前各節中選擇的選項會決定您的應用程式將執行的裝置範圍,而且該範圍很可能非常廣泛。 即使將應用程式限制為行動裝置系列,您仍然可以支援各種螢幕尺寸。 由於您的應用程式將在先前不支援的外形規格上執行,因此請在這些外形規格上測試您的 UI,並進行必要的變更,使 UI 在各種外形規格上進行適當地調整。 您可以將其視為移植後工作或移植延伸目標,Bookstore2 案例研究中有一個實作範例。
逐層移植
- 檢視表。 檢視 (以及檢視模型) 構成了應用程式的 UI。 理想情況下,檢視由繫結到檢視模型可觀察屬性的標記所組成。 另一種模式 (常見且方便,但僅適用於短期) 是使用程式碼後置檔案中的命令式程式碼來直接操作 UI 元素。 無論哪種情況,您大部分的 UI 標記和設計 (甚至是操作 UI 元素的命令式程式碼) 都能夠輕鬆移植。
- 檢視模型和資料模型。 即使您沒有正式採用關注點分離模式 (例如 MVVM),您的應用程式中也必定會存在執行檢視模型和資料模型功能的程式碼。 檢視模型程式碼會使用 UI 架構命名空間中的類型。 檢視模型和資料模型程式碼也都會使用非視覺化作業系統和 .NET API (包括用於資料存取的 API)。 而且其中絕大多數可用於通用 Windows 平台 (UWP) 應用程式,因此您能夠在不進行變更的情況下移植大部分程式碼。 但請記住:檢視模型是檢視的模型或抽象概念。 檢視模型提供 UI 的狀態和行為,而檢視本身提供視覺效果。 因此,任何 UWP 可讓您執行,並可根據不同外形規格調整的 UI,都可能需要相應的檢視模型變更。 對於網路和呼叫雲端服務,您通常可以選擇使用 .NET 或 Windows 執行階段 API。 有關做出此決策所涉及的因素,請參閱雲端服務、網路和資料庫。
- 雲端服務。 您的某些應用程式 (或許是大部分) 可能是以服務形式在雲端中執行。 在用戶端裝置上執行的應用程式部分會連接到這些裝置。 這是分散式應用程式在移植用戶端部分時,最有可能保持不變的部分。 如果您還沒有選擇雲端服務,那麼對於您的 UWP 應用程式來說,Microsoft Azure 行動服務會是一個不錯的選擇,它提供了強大的後端元件,Universal Windows 應用程式可以呼叫這些元件來獲取各種服務,包括從簡單的動態磚更新通知,到伺服器叢集可以提供的繁重可擴充性。
在移植之前或期間,請考慮是否可以透過重構來改進您的應用程式,以便具有相似用途的程式碼分層聚集在一起,而不是隨意分散。 將您的 UWP 應用程式分解為各層級 (如上所述) 可以讓您更輕鬆地使應用程式正確運作、進行測試,然後讀取和維護應用程式。 透過遵循 Model-View-ViewModel (MVVM) 模式,您可以提高功能的可重複使用性,並避免平台之間 UI API 差異的問題。 此模式會讓應用程式的資料、商務和 UI 部分彼此分開。 即使在 UI 中,它也可以將狀態和行為與視覺效果分開,並且可以單獨測試。 使用 MVVM,您可以編寫一次資料和商務規則,然後在所有裝置上使用它,無論 UI 為何。 您可能也能夠跨裝置重複使用大部分檢視模型和檢視元件。
該規則的一兩個例外狀況
當您閱讀本移植指南時,您可以參考命名空間和類別對應。 通常都是採用簡單直觀的對應,命名空間和類別對應表則說明了例外狀況。
在功能層級,好消息是 UWP 幾乎支援所有功能。 您的大部分技能集和原始程式碼都可以順利轉換為 UWP 應用程式,就像您將在本移植指南其他小節中看到的那樣。 但是,以下是您可能用過的 Windows Phone Silverlight 功能,但其沒有 UWP 對等項。
沒有 UWP 對等項的功能 | 該功能的 Windows Phone Silverlight 文件 |
---|---|
Microsoft XNA。 一般來說,替代方案為使用 C++ 的 Microsoft DirectX。 請參閱開發遊戲以及 DirectX 和 XAML Interop。 | XNA Framework 類別庫 |
Lens 應用程式 | 適用於 Windows Phone 8 的 Lenses |
主題 | 說明 |
---|---|
命名空間和類別對應 | 本主題提供 Windows Phone Silverlight API 與其 UWP 對等項的完整對應。 |
移植專案 | 您可以在 Visual Studio 中建立新的 Windows 10 專案並將檔案複製到其中,以此開始移植程序。 |
疑難排解 | 強烈建議您完整閱讀本移植指南,但我們也理解您渴望進行下一步,進入專案建立和執行的階段。 為此,您可以透過註釋或刪除任何非必要的程式碼來暫時取得進展,之後再回來繼續閱讀。 本主題中的疑難排解症狀和補救措施表在此階段可能對您有所幫助,但只靠它並不能取代接下來的幾個主題。 當您學習到後面的主題時,隨時都可以返回參考該資料表。 |
移植 XAML 和 UI | 以宣告式 XAML 標籤的形式定義 UI 的做法,可以從 Windows Phone Silverlight 順利地轉換到 UWP 應用程式。 一旦您更新了系統資源索引鍵參考、變更了一些元素類型名稱並將「clr-namespace」變更為「using」,您會發現大部分標記都是相容的。 |
I/O、裝置和應用模型移植 | 與裝置本身及其感應器整合的程式碼涉及使用者的輸入和輸出。 它還可能涉及處理數據。 但是,此程式碼通常不會視為 UI 層或資料層。 此程式碼包括與振動控制器、加速計、陀螺儀、麥克風和喇叭 (與語音識別和合成交集) 、 (地理) 位置和輸入方式 (觸控、滑鼠、鍵盤和手寫筆等) 的整合。 |
移植商務層和資料層 | UI 背後是您的商務層和資料層。 這些層級中的程式碼會呼叫作業系統和 .NET Framework API (例如,背景處理、位置、相機、檔案系統、網路和其他資料存取)。 其中絕大多數可用於通用 Windows 平台 (UWP) 應用程式,因此您能夠在不進行變更的情況下移植大部分程式碼。 |
針對外形規格和 UX 進行移植 | Windows 應用程式可在電腦、行動裝置和各種其他類型的裝置上共用常見的外觀與風格。 使用者介面、輸入和互動模式非常相似,在經常換裝置的使用者會喜歡這種熟悉的體驗。 |
案例研究:Bookstore1 | 本主題的案例研究介紹如何將簡易的 Windows Phone Silverlight 應用程式移植到 Windows 10 UWP 應用程式。 使用 Windows 10,您可以建立一個應用程式套件,讓客戶可以將其安裝到各種裝置上,這就是我們在本案例研究中要做的事情。 |
案例研究:Bookstore2 | 本案例研究以 Bookstore1 中提供的資訊為基礎,從 Windows Phone Silverlight 應用程式開始,其會在 LongListSelector 中顯示分組資料。 在檢視模型中,作者類別的每個執行個體代表該作者撰寫的書籍群組,在 LongListSelector 中,我們可以查看依照作者分組的書籍列表,也可以縮小以查看作者的捷徑清單。 |
相關主題
文件
- Windows 10 中適用於開發人員的新功能
- 通用 Windows 平台 (UWP) 應用程式指南
- 使用 C# 或 Visual Basic 的通用 Windows 平台 (UWP) 應用程式的藍圖
- Windows Phone 8 開發人員的下一步
雜誌文章
簡報
- 將 Nokia 音樂從 Windows Phone 引入 Windows 8 的案例