時間:2017-04-18 來源:互聯網 瀏覽量:
注意:這篇文章是“指南”,並不是涉及大量具體技術的教程,旨在告訴大家入門UWP開發的方法以及建議參閱的教學材料。
1、概述
UWP(Universal Windows Platform,通用Windows平台)是微軟新提出的一種應用種類,其核心思想是通過統一的平台,使開發者能很輕易的在多種不同的設備上共享自己的核心代碼,並為用戶提供統一的使用體驗。類似於Java的多平台兼容方式,UWP基於一個類似的框架,叫.NET Framework(.NET框架);這些被稱作“框架”的東西,抹平了不同的操作係統API的區別,並有一個稱作“Runtime(運行時)”的東西負責托管相當大一部分的內存數據。類似於Java,.NET隻是一個標準,任何實現了.NET標準(或其一個子集)的框架都可以被稱作.NET框架。而運行於Win10的UWP,則基於微軟官方提供的Microsoft .NET Framework(或Xamarin的.NET框架,但不是建議的,除非你想同時開發安卓或iOS應用)。
.NET框架推出的同時,微軟發布了一種基於類型的語言C#,這門C係語言現在已經發展成了對.NET框架最友好的語言,因此,其成為了開發UWP最方便、最高效(指開發效率)的語言。故,對於零基礎的學習者,C#是最佳的入門語言。
2、開發環境
任何開發入門都要從開發環境講起。任何一個合格的開發環境都必須能正常完成開發、編譯、調試、發布這四個基本步驟。既然要調試UWP應用程序,那麼主機係統能運行UWP自然是最好的,所以UWP開發建議在Win10上進行。幸運的是,微軟給開發者提供了一整套解決方案——Visual Studio(簡稱VS,下同)。現在VS已經發布至了2017版本,任何一個版本的VS都內建對C#的支持,但是Windows SDK(Windows開發者工具包,用於提供對UWP開發的支持)是一個可選的安裝組件。在安裝VS2017的時候,記得勾上這一項:
以及右邊詳細選擇功能區域裏的:
如果決定提供對舊版係統的支持,則需要勾上:
一般的,安裝成功完成之後,你就獲得了一個全功能的UWP開發環境。
3、學習C#語言
C#已經發展到7.0版本,但是依據我對C#曆史版本的體驗,我個人認為C#3.5是入門的最佳版本(雖說無論用哪個版本入門都是可以的,但是過舊的版本可能不提供某些常用的功能,過新的版本語法糖太多可能會把初學者弄混)。我個人推薦的入門教材是Wrox係列的《C#入門經典》以及另一本深入了解C#用的《CLR via C#》。C#是相當簡單的語言,學習起來不會那麼複雜。一旦掌握了某一個基礎的版本,你就可以通過查閱MSDN(微軟開發者網絡)上相關的文檔來了解和學習新的C#版本的新特性,從而掌握C#語言。
4、學習XAML
以前接觸過Winform的朋友們可能對它那種“所見即所得”的工作方式印象深刻,但是在UWP開發中,直接進行控件繪製是不被建議的。UWP開發時,UI被一種稱作XAML的可擴展標記語言表述,而且通常情況下,這種語言表述的UI能自動適應任意設備和任意大小的窗口。
接觸過WPF的朋友可能對XAML比較熟悉,因為WPF也是通過XAML來表述UI的;用於UWP開發的XAML和用於WPF的XAML比較相似,但是有些差別,所以仍應該重新學習這種表述語言。XAML的教程一般被包含於UWP開發教材中。
5、學習UWP開發
學習UWP開發是很簡單的,尤其是在你已經學習了上述知識之後。學習UWP的本質,實際上是學習UWP所基於的.NET框架的相關知識,建議的入門教程是《Windows 10開發入門經典》。一旦入門掌握了UWP基本的思想和開發方式,微軟的MSDN上大量的文檔就成了提高自己技術水準的主要材料(鑒於機器翻譯比較生硬,我建議有能力的朋友看英文原版)。
學習技術的同時,不要忘記學習相關的規範。從底層的代碼編寫規範到表層的UI設計規範,每一處都應該被仔細推敲;否則,你的代碼將很難被看懂,或者做出一個不堪入目的應用。
6、購買微軟開發者賬戶,發布你的應用
不是所有人都有權在商店發布應用(不然商店會被大量無意義的應用占滿),當你決心開發一款UWP應用、並將其貢獻作UWP生態的一部分的時候,你要做的第一件事就是購買微軟開發者賬戶。在微軟開發者中心,你可以為你的賬戶付款,使其成為開發者賬戶(付款是一次性的,不需要續費),至於如何發布自己的應用,開發者中心有非常詳細的文檔,當然這已經不屬於“入門”的指南內容了。
7、總結
無論如何,UWP還是一種相對比較優秀的應用類型,而且入門並不困難。以目前UWP的發展勢頭,未來UWP可能成為主流的應用類型之一(微軟早就想用它取代Win32了)。對於目前羸弱的UWP生態來說,多一個開發者就多一份力量。UWP的觀念是超前的,其它平台也在逐漸向這種觀念靠攏,即使最終UWP失敗了,你在開發UWP時積累的多平台開發經驗也能使你更快地入門其它類似觀念的應用開發