Win10 UWP开发快速入门指南
注意:这篇文章是“指南”,并不是涉及大量具体技术的教程,旨在告诉大家入门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时积累的多平台开发经验也能使你更快地入门其它类似观念的应用开发。