在 JavaScript 和 C++ 中开发 Windows 应用商店应用程序 Bing 地图行程优化器

文档本部分中的文章介绍如何使用 JavaScript 和 Visual C++ 创建名为 Bing 地图行程优化器的 Windows 应用商店应用程序。与网站不同,使用 JavaScript 的 Windows 应用商店应用程序并非逐页从 Web 服务器进行部署。而是由用户安装到计算机上的。与任何其他 Windows 应用程序一样,JavaScript Windows 应用商店应用程序可直接访问基础平台,并可与其他应用程序共享信息。

在 JavaScript Windows 应用商店应用程序中可使用 C++ 充分利用计算机的功能。Bing 地图行程优化器使用 JavaScript 在 Windows 运行时 C++ 组件中定义 UI 和并行模式库 (PPL),以便在所有可用的 CPU 中并行执行计算开销很大的算法,从而改善整体性能。还可以使用库(如 C++ Accelerated Massive Parallelism (C++ AMP))在图形处理单元 (GPU) 中执行计算密集型工作。

备注

若要下载 Bing 地图行程优化器源代码的 Windows 应用商店版本,请参见 Bing 地图行程优化器示例

Bing 地图行程优化器应用程序基于现有代码,该代码使用 HTML 和 JavaScript 定义 UI 和 C++ Activex 控件来执行后台处理。本文的此部分还介绍如何将应用程序的 ActiveX 版本迁移至 Windows 应用商店应用程序以及将现有的 JavaScript 和 ActiveX 代码迁移至 Windows 应用商店应用程序代码时要注意的一些事项。若要下载源代码的 ActiveX 版本,请参见 Bing 地图行程优化器

提示

将 Bing 地图行程优化器的 ActiveX 版本转换为 Windows 应用商店应用程序时,仍使用了 JavaScript 和 C++。但如果你是从头开始创建此应用程序,则可使用其他语言。例如,可以使用 XAML 定义 UI,使用 .NET Framework 执行路线计算。有关如何为应用程序选择正确的语言和技术的信息,请参见 Windows 应用商店应用程序入门

还可以创建使用 JavaScript 和 .NET Framework 的混合语言应用程序。有关此类应用程序的信息,请参见用 C# 和 Visual Basic 创建 Windows 运行时组件

虽然我们认为 Bing 地图行程优化器举例说明的设计模式是使用 JavaScript 和 C++ 创建 Windows 应用商店应用程序的最佳做法,但您可调整实现中的许多详细信息,以符合您自己的现实情况以及所开发应用程序的独特要求。例如,应用程序的 C++ 部分使用 IXMLHTTPRequest2 接口处理 HTTP 请求。可在你的应用程序中遵循同一模式。我们认为 Bing 地图行程优化器实现对于成功进行应用程序开发非常重要,因此本文档对其进行了重点介绍。

本文内容

  • Bing 地图行程优化器简介

  • 先决条件

  • 本文档的目标读者

  • 本文档包含的内容

  • 本文档未包含的内容

  • 后续步骤

  • 相关文章

Bing 地图行程优化器简介

Bing 地图行程优化器计算一组位置中的最短路线(这一经典的计算问题也称为旅游推销商问题)。旅游推销商问题通常使用强力攻击技术来解决:计算所有位置的每个可能路线并选择最短路线。在增加位置数时,此问题的难度以指数方式增大。由于强力攻击方法可能无法在合理时间内解决较大的问题,因此 Bing 地图行程优化器使用称为蚁群优化算法的技术来更快速、高效地估计最短路线。

Bing 地图行程优化器 UI 用 HTML 和 JavaScript 编写。该 UI 从用户那里收集位置并在 Bing 地图 AJAX 控件中显示所有位置中最短的路线。最短路线计算以及与 Bing 地图具象状态传输 (REST) API 的交互是用 C++ 编写的。语言之间稳定的互操作性是 Windows 运行时中的关键,因为它允许用户将每种语言的最佳功能组合到一个应用程序中。就 Bing 地图行程优化器来说,HTML 和 JavaScript 用于定义 UI,C++ 用于执行计算密集型操作。

Bing 地图行程优化器

虽然许多 Windows 应用商店应用程序都使用深色演示主题帮助延长移动设备中的电池使用时间,但我们仍采用浅色演示以更接近 Bing 地图网站的风格。仍采用浅色主题还有助于比较应用程序的 Windows 应用商店与 ActiveX 版本之间的区别。

备注

Bing 地图行程优化器的主要目标是演示如何在 JavaScript 和 C++ 之间进行互操作。我们还希望演示如何改编现有代码,以用在 Windows 应用商店应用程序中。因此,UI 并未符合有关制作出色 Windows 应用商店应用程序的所有用户体验 (UX) 准则。请阅读设计案例研究:Windows 应用商店应用程序的网站,了解如何改变您的网站以创造真正丰富的用户体验。

[顶部]

先决条件

如果不熟悉如何在 Windows 应用商店应用程序中使用 JavaScript,请考虑是否阅读开发 Windows 应用商店应用程序 (JavaScript)。这篇文章可指导您完成创建一个完整而基本的 JavaScript Windows 应用商店应用程序的所有步骤。

有关 JavaScript Web 应用程序与针对 Windows 运行时编写的 JavaScript Windows 应用商店应用程序不同之处的详细信息,请参见使用 JavaScript 的 Windows 应用商店应用程序与传统 Web 应用程序

[顶部]

本文档的目标读者

如果要用 JavaScript 编写 Windows 应用商店应用程序,并且还想使用 C++ 实现以下目的,则您可能对此示例和文档感兴趣:

  • 改善性能或执行计算密集型操作。

  • 访问通过当前版本的 Windows 运行时无法访问的 Windows 操作系统服务。

  • 重用已编写和测试的现有代码。

我们希望您使用本文档中的原则和实践创建您自己的也使用 C++ 的 JavaScript Windows 应用商店应用程序。C++ 背景或对 C++ 的强烈兴趣将有助于你充分利用本文档。如果你没有 C++ 经验,但拥有类似编程语言或 .NET Framework 方面的经验,也可从中受益。

如果要基本了解如何创建可从使用 JavaScrip 生成的 Windows 应用商店应用程序调用的以 C++ 编写的 Windows 运行时组件,请参见用 C++ 创建 Windows 运行时组件

[顶部]

本文档包含的内容

文档中此部分的文章介绍如何:

  • 使用 Visual Studio 创建引用 C++ Windows 运行时组件的 JavaScript Windows 应用商店应用程序。

  • 将 JavaScript 代码划分为引用 Web 组件的模块和引用 Windows 运行时组件的模块。

  • 创建执行计算密集型操作的 C++ Windows 运行时组件。

  • 在 JavaScript 和 C++ 之间进行互操作。

  • 迁移代码(如现有 COM 代码),以用在 Windows 应用商店应用程序中。

[顶部]

本文档未包含的内容

本文档不涉及 Windows 应用商店应用程序开发的以下方面:

  • 应用程序设计原则。

  • C++ 或 JavaScript 编程基础知识。

  • 有关蚁群优化算法的深入详细信息。

  • 如何解决应用程序中的行为或性能问题。

  • 如何准备应用程序以便在其他区域设置中使用。

  • 如何认证应用程序并将其发布到 Windows 应用商店。

此应用程序重点关注 JavaScript 与 C++ 之间的互操作性。因此,我们并未实现制作出色 Windows 应用商店应用程序的每项功能。我们未实现的一个重要功能是,在应用程序关闭后(例如,在重新启动后)用户运行它时恢复应用程序的状态。有关此功能的演示示例,请参见应用程序激活和挂起示例

以下资源可帮助您了解 Windows 应用商店应用程序开发。

[顶部]

后续步骤

建议你阅读 Bing 地图行程优化器示例概述,了解有关如何加载并运行项目和整个应用程序流的信息。下表介绍了本部分文档中的文章,以便你更轻松地参考它们。

[顶部]

相关文章

标题

说明

Bing 地图行程优化器示例概述

介绍 Bing 地图行程优化器项目的基本特征,例如,其创建和构造方式以及生成方式。

在 Bing 地图行程优化器示例中使用 JavaScript

介绍该应用程序中 JavaScript 部分的组织方式以及本地上下文和 Web 上下文相互进行通信的方式,

在 Bing 地图行程优化器示例中使用 C++

介绍 Bing 地图行程优化器的 C++ 组件。

在 Bing 地图行程优化器示例中的 JavaScript 和 C++ 之间进行互操作

介绍 Bing 地图行程优化器示例的 JavaScript 和 C++ 部分如何交互操作。

在 Bing 地图行程优化器示例中迁移现有代码

重点介绍在从 Bing 地图行程优化器的 ActiveX 版本迁移到 Windows 应用商店应用程序时所遵循的一些重要原则。

[顶部]

请参见

概念

创建 Windows 运行时组件

其他资源

Roadmap for Windows Store apps using C++