2015 年 12 月

第 30 卷,第 13 期

新式应用 - 需要了解的 Windows 10 应用开发概念

作者 Rachel Appel | 2015 年 12 月

我想分享一些关于 Windows 10 应用开发的看法,以帮助您了解和更高效地使用它。不过,本文涉及的一些功能适用于一般用户,让开发者了解这些功能绝对是一个好主意,这样可以让开发者从用户的角度了解所构建的软件具有的好处。

Visual Studio 2015

大多数 Microsoft 开发者使用的 IDE 是 Visual Studio。您首先注意到的一些 Visual Studio 2015 变更包括:经过简化的全新安装程序,以及使用多个帐户登录的功能。对于许多作为顾问和全职员工的开发者(需要白天使用公司网络,晚上在应用商店上发布应用)来说,这真是太棒了。

Visual Studio 安装中包含大量可用的第三方工具。Xamarin 开箱即用,认真执行跨平台开发只需使用这一个软件。不过,您必须通过选择选项,将它添加到安装中。除了 C# (Xamarin) 之外,您还可以通过选择选项来安装适用于 Android 的 Java,以及适用于 iOS 和 Android 的基于 C 的语言。

通常,对于 Visual Studio 版本和授权,几乎需要获得博士学位,才能理解或记住功能和版本的对应关系。幸运的是,您可以访问 bit.ly/1COm2fP,详细了解和比较 Visual Studio 2015 产品和服务。

每版新发布的 Visual Studio 都会带来全新的一组模板。现在,在 ASP.NET 中,模板使用依赖关系注入(通过整个 ASP.NET MVC 6 应用可用)启用松散耦合的网站构建。在 Microsoft 官方商城中部署的应用主要侧重于通用 Windows 平台 (UWP) 应用概念,这让开发者能够使用基本通用代码构建应用,通用代码适用于运行应用的所有 Windows 操作系统和设备。使用 C#、Visual Basic、JavaScript 或 C++ 可以创建 UWP 应用。在此专栏的后面部分,我将详细介绍 UWP 应用。

在全新的 Edge 浏览器上启用 Edge

最显而易见且最常谈及的 Windows 变更之一是 Edge 浏览器,其带来了平稳、快速的浏览体验。在使用 Edge(即使很短一段时间)后,您就会相当明显地发现,这不是父辈们使用的 Internet Explorer。首先,它对浏览体验进行了数千项改进 (bit.ly/­1G49Cwe)。最显而易见的改变是 Edge 流畅的界面(包含许多可自定义内容的起始页)以及整体外观。图 1 展示了 Windows 10 上 Edge 浏览器中的 MSDN 杂志主页。

提供时尚、平稳的浏览体验的 Edge 浏览器
图 1:提供时尚、平稳的浏览体验的 Edge 浏览器

Edge 浏览器的首要任务始终都是提供互操作性。

每个浏览器都需要一个或多个引擎来处理构成目前网页的 HTML、CSS 和 JavaScript。因此,Edge 团队设计了全新的 HTML 处理引擎(名为 EdgeHTML)。互操作性带来了诸多好处,包括方便您在无缝开发跨平台 Web 应用的同时,创建在各种设备和外形规格上完美显示的 HTML。此团队已在 EdgeHTML 中实现了 45 项新 HTML 标准 (bit.ly/1G49Cwe)。

您会发现 Internet Explorer 中使用的同一 Chakra 引擎。Chakra 运行速度极快且性能良好,因此最好保留它并进行一些微调。它的极快速度归功于多项因素,主要因素是一项称为图形处理单元 (GPU) 卸载的技术。Chakra 卸载,或发送脚本至 GPU 进行处理。也就是说,脚本在 GPU 上运行,与此同时 HTML 及“好友”在通常执行处理的 CPU 上运行。在 Internet Explorer 团队实现了此功能之后,其他浏览器也很快开始实现它。您可以查看 Windows 博客 (bit.ly/1X0Npt0),详细了解 Edge 中的 Chakra 性能。

您可以浏览 Edge 开发者指南 (bit.ly/1jwFYec),此指南出于有效使用考虑,对 F12 工具的重大变化进行了完整分类列举。一些新增的精彩功能包括设置 XHR 断点,以及在 DOM 资源管理器中查看网页。

通用 Windows 平台

智能手机和平板电脑的 Web 流量巨大,不过也有许多用户使用桌面设备浏览 Web。现在,网站和应用必须绝对支持多种设备和外形规格。

Windows 10 是真正的通用 Windows 操作系统系列。现在,对于所有 Windows 10 设备,您都可以只构建和维护一个基本代码、一个包,并能向一个应用商店只提交一次。也就是说,这包括一切设备,从手机、平板电脑和笔记本电脑到台式机、超极本和服务器。只要您说得出名字,UWP 应用就可以在上面运行。

Windows 通知为我提供消息

谁不喜欢手机、计算机及其他设备可以提醒您所有事项呢(无论对您是否重要)? 您邻居的朋友的姐妹 36 岁生日? 好的,知道了! 现在,您可以提醒用户与您应用相关的各种事项。前提是用户允许这样做。一些用户会关闭通知功能。对于不喜欢这些提醒的用户,他们可以在系统设置中开启“有关 Windows 的提示”,以及全系统范围内或应用特定的通知。

您的应用通知配备有全新的操作中心,它的图标位于屏幕右下角的 Windows 通知区域内(亦称为“系统托盘”)。单击通知图标可调出新式浮出控件窗口,其中包含兼容触摸功能的磁贴(位于等待处理的消息列表下)。当然,如果用户允许,您应用的通知也会显示在通知区域中。

创建通知的代码本质上仍与之前相同,通知的显示位置及其整体外观均由 Windows 控制。当然,您可以从许多预定义通知模板中选择一个,从而在某种程度上自定义外观。选择如此之多,找到一个满足您需求的模板应该没有问题:

ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText01;
XmlDocument toastXml =
  ToastNotificationManager.GetTemplateContent(toastTemplate);

有关详细信息,请参阅 MSDN 库中的“使用磁贴、锁屏提醒和 Toast 通知 (XAML)”一文 (bit.ly/1LPogJw)。

与 Cortana 对话

Windows Phone 让全世界认识了 Cortana。Cortana 是 Microsoft 语音数字助理,允许您使用语音命令执行各种任务,如安排约会时间、查询路线和提取最新的新闻和天气。Cortana 可以协助您完成许多日常活动。如此宝贵而有益的软件有资格使用 SDK;Windows 10 中新增了许多功能,如背景语音命令和连续听写。您甚至可以使用语音 SDK 启用文本到语音转换 (TTS)。使用语音命令和语音识别技术是构建较高质量的产品(不仅具有可见 UI)的绝佳方式。

若要构建启用语音的 Windows 应用,请创建和注册语音定义文件 (.vcd),其中列出了您应用中可用的命令、字词和短语,就像您在旧版 Windows 和 Visual Studio 中一样操作。然后,您可以使用 C#、JavaScript 或所需的其他语言编写您的应用,并让 Cortana 将命令转换成口头形式。代码相当简单(如图 2 中所示),其中替代了 OnActivated 事件来检测发出的是哪个命令,以便应用可以执行操作。

图 2:.vcd 文件的内容和随附的 C# 代码

<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands xmlns="https://schemas.microsoft.com/voicecommands/1.0">
  <CommandSet xml:lang="en-us">
    <CommandPrefix> Options </CommandPrefix>
    <Example> Show Options</Example>
    <Command Name="showOptions">
      <Example> Show options </Example>
      <ListenFor> [Show] {optionViews} </ListenFor>
      <Feedback> Showing {optionViews} </Feedback>
      <Navigate Target="/options.xaml"/>
    </Command>
    <PhraseList Label="optionViews">
      <Item> today's specials </Item>
      <Item> best sellers </Item>
    </PhraseList>
  </CommandSet>
  <!-- Other CommandSets for other languages -->
</VoiceCommands>
protected override void OnActivated(IActivatedEventArgs args)
  {
    if (args.Kind ==
      Windows.ApplicationModel.Activation.ActivationKind.VoiceCommand)
    {
      var commandArgs =
        args as Windows.ApplicationModel.Activation.VoiceCommandActivatedEventArgs;
        Windows.Media.SpeechRecognition.SpeechRecognitionResult
      speechRecognitionResult =
        commandArgs.Result;
      string voiceCommandName = speechRecognitionResult.RulePath[0];
      string textSpoken = speechRecognitionResult.Text;
      string navigationTarget =
        speechRecognitionResult.SemanticInterpretation.
        Properties["NavigationTarget"][0];
      switch (voiceCommandName)
      {
        case "showOptions":
          // EventReminder(textSpoken, navigationTarget);
          break;
        // default:
        // There is no match for the voice command name
      }
    }
  }

Windows 应用商店

全新的 Windows 应用商店为所有人都提供其想要的。对于企业,Windows 应用商店允许管理员为员工展示应用。他们甚至可以分发 Windows 应用商店中的精选应用,从而部署专用业务线应用。此外,采购订单现在是一种已被接受的付款方式。在 Windows 10 中,应用商店现在提供订阅作为额外的货币化选项。

作为应用商店更新的一部分,Windows 10 Microsoft 广告 SDK 目前支持视频广告。一些营销专家表示,视频和多媒体比文字更能提高销售率,那么现在您可以在您的应用中验证这一假说了。幸运的是,由于 Microsoft 宣布了安装跟踪这一新功能,因此您就有办法这么做了。

连续体

不过,所有这些 UWP 应用开发都不仅仅局限于跨设备体验。Windows 10 上的 Continuum 可检测您何时想在多功能设备上切换使用模式。以 Francine Flyer 为例,此用户在飞机上使用 Surface 的桌面模式完成了一些工作,现在想看电影。Francine Flyer 只需拆离键盘,即可轻松地在桌面设备和平板电脑模式之间切换。Windows 会通知并询问她是否想要切换到更加兼容触摸功能的模式。Flyer 点按“是”,此时 Windows 进入兼容触摸功能的模式,然后她就可以享受电影了,没有碍手碍脚的键盘或鼠标。如您所见,Continuum 适用于 Surface、混合或变形本笔记本电脑/平板电脑以及任意种类的多功能设备。即使笔记本电脑的触摸屏没有变形本功能,用户仍可在切换模式时受益。受益于 Continuum 的不仅仅局限于大型设备。当用户在手机上连接无线键盘、鼠标和屏幕时,借助适用于手机的 Continuum,用户可以像使用桌面应用一样使用您的应用。周围有这么多与平板手机一样大小的设备,Continuum 当然会得到妥善利用。

全新的“开始”(菜单)

绝对最显而易见但可能最具争议的变更是 Windows“开始”菜单。可以说,在计算机发展史中确实有几个 UI“麻烦制造者”,Windows“开始”菜单当然就是其中一个。每当有 Windows 新版本推出,喜欢和不喜欢“开始”菜单变更的人数各占一半。当 Windows 8 中引入新式体验后,新设计得到很多人的称赞,但也有许多人坚持拥护经典的范式并抵制变更。现在,在 Windows 10 中,“开始”菜单发生了一些非常显著的变化。

就目前来看,将磁贴移到“开始”菜单是优于之前的设计(再加上桌面和起始页之间的工作流略有波动)。将此与 Continuum 结合,我们现在就有了增强优化的“开始”菜单,起始页只出现在应有的位置上(在诸如平板电脑、手机之类的触控设备上)。如果您更喜欢键盘快捷方式,请注意 Windows 键盘键已经推出了一段时间。您可以开始键入您应用的名称或想要执行的操作,然后 Windows 会查找相应的应用或执行您希望的操作。

调整为自适应用户体验

从概念上讲,在 Windows 操作系统系列上进行的自适应开发与 Web 响应式设计类似。不过,自适应开发以整个设备系列为目标,而响应式开发则以屏幕尺寸范围为目标。在过去几年中,跟上市场上不同设备的爆发式发展节奏是不可能的。有些软件是针对购买新的智能手机的用户,但却引发了分析瘫痪。您能想象如果需要开发适用于所有这些设备的软件是怎样一种境况吗? 幸运的是,Windows 10 可以确定在运行时托管应用的设备或用户如何使用应用,然后相应地调整用户体验。也就是说,诸如浮出控件或其他控件之类的元素可以自动重设大小,或应用更大或更小的字体,具体视分辨率而定。在设计自适应解决方案之前,请务必查阅 MSDN 库中的“适用于通用 Windows 平台 (UWP) 应用的初级设备”一文 (bit.ly/1MpspVh)。

一个 Windows 平台

Windows 10 的一大精选功能是 UWP 应用的出现。UWP 应用是一种您只需使用一种基本代码,即可在所有 Windows 操作系统中部署的应用。 通常,此策略只对后端和逻辑起作用;不过,对于构建 UI,这也是一个更平稳的流程。那是因为,与其定位不同的操作系统和编写同一 UI 代码的多个版本,您不如定位整个设备系列,这样可以减少构建 UI 的麻烦。不过,如果您只想定位一个特定的操作系统,则可以这样做。否则,您需要构造的 UI,使其在设备系列适应 Continuum 的最小和最大尺寸范围内出色运行。XAML 以及 Windows JavaScript 库 (WinJS) 中发生了多项 API 和控件变更。特别是,XAML 带来了新的日历控件,以及用于放置日历的新自适应面板控件。

作为开发者,您可以利用 Visual Studio 中的单一解决方案来处理,因为我们将基础的基本代码称为“一个 Windows 平台”。借助这一解决方案模型,自适应控件和技术使用很少的代码或不使用代码,就可以调整为适应各种设备系列。

总结

Windows 一直在重塑用户体验环境,以满足用户的需求。您可以在您的应用中构建许多新的精彩功能,如 API 和控件变更。语音是输入也很容易被忽视,所以对于您的下一个应用,别忘了考虑一下 Cortana。从 Windows 应用商店到 Visual Studio,Windows 10 致力于提供平稳的开发和用户体验。


Rachel Appel是一位顾问、作家、导师和前 Microsoft 员工,在 IT 行业有 20 多年的经验。她常在 Visual Studio Live!、DevConnections、MIX 等顶级行业大会上发言。她的专业是开发侧重于 Microsoft 系列开发技术和开放式 Web 并且符合业务和技术需要的解决方案。有关 Appel 的详细信息,请访问她的网站 rachelappel.com

衷心感谢以下 Microsoft 技术专家对本文的审阅: Frank La Vigne