玄铁剑

成功的途径:抄,创造,研究,发明...
posts - 128, comments - 42, trackbacks - 0, articles - 174

Windows Mobile 6 开发

Posted on 2008-12-09 21:17 玄铁剑 阅读(443) 评论(0)  编辑 收藏 引用 所属分类: Mobile

Jim Wilson,JW Hedgehog, Inc。

摘要

Windows Mobile® 6 开发人员平台版本侧重于几个核心目标:简化行业 (LOB) 应用程序开发和部署、安排构建单个应用程序的任务(该应用程序更易于在 Windows Mobile 系列中的许多不同设备上成功运行),并提供增强的用户体验。本文从开发人员的角度介绍了 Windows Mobile 6 的新功能及其用途。本文还介绍了 Windows Mobile 6 软件开发工具包 (SDK) 提供的许多新功能,并为开始开发 Windows Mobile 6 应用程序提供了一些指导。

适用于

  • Windows Mobile 6 Professional

  • Windows Mobile 6 Standard

  • Windows Mobile 6 Classic

本页内容

简介 简介
了解 Windows Mobile 6 命名约定 了解 Windows Mobile 6 命名约定
强大的 Windows Mobile 5.0 兼容性 强大的 Windows Mobile 5.0 兼容性
简化应用程序开发 简化应用程序开发
示例 示例
简化应用程序部署 简化应用程序部署
构建一个在许多设备上运行的应用程序 构建一个在许多设备上运行的应用程序
增强用户体验 增强用户体验
开始构建 Windows Mobile 6 应用程序所需的内容 开始构建 Windows Mobile 6 应用程序所需的内容
充分利用现有技能 充分利用现有技能
指导 指导
结束语 结束语

简介

Windows Mobile 6 开发人员平台版本侧重于几个核心目标:简化 LOB 应用程序开发和部署、安排构建单个应用程序的任务(该应用程序更易于在 Windows Mobile 系列中的许多不同设备上成功运行),并提供增强的用户体验。

为实现这些目标,Windows Mobile 6 以 Windows Mobile 的先前版本(特别是 Windows Mobile 5.0)为基础而构建。Windows Mobile 5.0 提供了许多平台增强功能和工具增强功能,用作 Windows Mobile 6 应用程序开发的基础。

如果您不熟悉 Windows Mobile 5.0 或者想要复习一下 Windows Mobile 5.0,请查看“Windows Mobile 5.0 中为开发人员提供的新功能”。在“Windows Mobile 5.0 中为开发人员提供的新功能”一文中讨论的功能、工具和 API 同样适用于 Windows Mobile 6。

本文从开发人员的角度介绍了 Windows Mobile 6 的新功能及其用途。本文还介绍了 Windows Mobile 6 软件开发工具包 (SDK) 提供的许多新功能,并为开始开发 Windows Mobile 6 应用程序提供了一些指导。

以下所列内容简要介绍了 Windows Mobile 6 和 Windows Mobile 6 SDK 中与开发人员最为相关的一些功能。

简化的行业应用程序开发和部署

  • .NET Compact Framework 2.0 Service Pack 1 (SP1) 和 Microsoft SQL Server™ 2005 Compact Edition 位于所有 Windows Mobile 6 设备的 ROM 中,这允许您的应用程序使用 .NET Compact Framework 2.0 和 SQL Server 2005 Compact Edition,而无需在用户的设备上分发或安装任一产品。这减少了部署应用程序所需的时间和开销,从而直接节省了金钱。

  • 改进的设备仿真程序,它通过提供新仿真状态(包括交流电源与电池电源之间的转换以及电池电量级别的变化)来提供更高的设备保真度。

  • 新的全球定位系统 (GPS) 测试实用程序 FakeGPS 允许您测试定位应用程序,而无需访问 GPS 设备。

  • 新的蜂窝仿真程序,它与设备仿真程序结合使用,使您能够测试应用程序在各种蜂窝方案中的行为,例如拨入电话、传入 SMS 消息、挂断电话和中断数据连接。

更易于构建一个在许多设备上运行的应用程序

  • 改进的设备仿真程序具有许多新功能,允许您在更大的设备外观造型范围内测试应用程序,而无需购买该设备。

  • 贯穿 Windows Mobile 系列的一致的 API 集允许您编写单个应用程序,该应用程序可在大范围的 Windows Mobile 设备上成功运行,而无需考虑设备制造商或移动运营商。

  • 开发人员指导,通过 Windows Mobile 6 SDK 附带的 100 多个示例应用程序提供。这些示例涉及多种多样的主题,其中包括构建一个可在许多不同设备上运行的应用程序的最佳实践。

增强的用户体验

  • Windows Mobile 6 具有最新设计的外观,旨在提高用户生产率并改进用户体验。利用标准 Windows Mobile 窗体(例如联系人选择对话框)的任何应用程序都会自动从重新设计的用户界面中受益。

  • 新增了轻型版本的 Tablet PC 手写 API、Windows Ink Services for Pen (WISP),允许您将基于手写的功能合并到在 Windows Mobile 6 Professional 和 Windows Mobile 6 Classic 设备上运行的应用程序中。

  • 新的声音 API 使您能够在 Windows Mobile 6 应用程序内播放各种声音格式(包括 MID、WMA、MP3 和 WAV)文件。

了解 Windows Mobile 6 命名约定

从引入最初的 Pocket PC 设备至今,多年来移动设备已有了很大改进。如今,有许多不同的设备类型和外观造型可用,每个都有其各自的优势。过去,设备类型之间有明显的差别;而如今,区分这些设备的界限已日益模糊。传统术语(例如 Pocket PC、Smartphone 和 Pocket PC Phone Edition)的说明性可能不强,而且有时会导致混淆。为使设备间的功能和关系更清晰,Microsoft 将为所有版本的 Windows Mobile 6 操作系统引入新的命名约定。表 1 显示了 Windows Mobile 5.0 和 Windows Mobile 6 操作系统命名约定之间的关系。

表 1. Windows Mobile 5.0 和 Windows Mobile 6 操作系统命名约定之间的关系

Windows Mobile 5.0 命名

Windows Mobile 6 命名

Windows Mobile 5.0 for Smartphone

Windows Mobile 6 Standard

Windows Mobile 5.0 for Pocket PC Phone Edition

Windows Mobile 6 Professional

Windows Mobile 5.0 for Pocket PC

Windows Mobile 6 Classic

新的命名约定从应用程序角度侧重于每个版本的功能,而不是侧重于设备硬件。

如果您以前开发过 Windows Mobile 应用程序,则会在所有 Windows Mobile 系列设备上感受到完全相同的开发人员体验;在整个 Windows Mobile 系列中均使用 API、工具和实用程序的公用集。在各种 Windows Mobile 设备中,存在差异的一个功能是触摸屏支持。Pocket PC 和 Pocket PC Phone Edition 设备具有触摸屏,因此支持直接屏幕输入;而 Smartphone 设备没有触摸屏,因此不支持直接屏幕输入。

为了与此关键差别更一致,Windows Mobile 6 SDK 不再像早期版本的 Windows Mobile SDK 那样,以特定的设备类型为目标。而是使用两个版本的 Windows Mobile 6 SDK 区分具有触摸屏的设备和不具有触摸屏的设备。使用 Windows Mobile 6 Professional SDK 为具有触摸屏的设备开发应用程序,这些具有触摸屏的设备过去称为 Pocket PC 或 Pocket PC Phone Edition。使用 Windows Mobile 6 Standard SDK 为不具有触摸屏的设备开发应用程序,这些不具有触摸屏的设备过去称为 Smartphone。表 2 显示了 Windows Mobile 6 SDK 和 Windows Mobile 6 设备之间的关系。

表 2. Windows Mobile 6 操作系统和 Windows Mobile 6 SDK 之间的关系

Windows Mobile 6 操作系统

对应的 Windows Mobile 6 SDK

Windows Mobile 6 Standard

Windows Mobile 6 Standard SDK

Windows Mobile 6 Professional

Windows Mobile 6 Professional SDK

Windows Mobile 6 Classic

Windows Mobile 6 Professional SDK

注意,Windows Mobile 6 Classic 和 Windows Mobile 6 Professional 设备具有触摸屏,二者均使用 Windows Mobile 6 Professional SDK;而 Windows Mobile 6 Standard 设备不具有触摸屏,它使用 Windows Mobile 6 Standard SDK。

强大的 Windows Mobile 5.0 兼容性

Windows Mobile 6 可以很好地与 Windows Mobile 5.0 应用程序兼容。与 Windows Mobile 5.0 兼容是 Windows Mobile 6 的明确目标,且已在整个 Windows Mobile 6 开发过程中进行了大量测试。绝大多数 Windows Mobile 5.0 应用程序都将在 Windows Mobile 6 设备上运行而无需进行修改。但需注意的是,兼容性的前提是应用程序使用受支持的 API。如您所猜想的那样,使用未记录或不受支持的 API 的 Windows Mobile 5.0 应用程序可能会遇到兼容性问题,而使用受支持的 API 的应用程序却不会遇到这些问题。

Windows Mobile 6 为 Windows Mobile 5.0 应用程序提供了强大的兼容性,允许您使用 Windows Mobile 5.0 SDK 或 Windows Mobile 6 SDK,构建针对 Windows Mobile 5.0 和 Windows Mobile 6 设备的单个可执行程序。这些应用程序将在 Windows Mobile 5.0 上顺利地运行,并将在 Windows Mobile 6 上更好地运行,这是因为 Windows Mobile 6 进行了许多改进,例如将 .NET Compact Framework 2.0 和 SQL Server Compact Edition 合并到 ROM 中。

简化应用程序开发

Windows Mobile 6 SDK 提供了使用 Microsoft Visual Studio® 2005 开始开发 Windows Mobile 6 应用程序时所需的工具和库。将 Visual Studio 2005 和 Windows Mobile 6 SDK 结合在一起,可在提供一些比以往更轻松地开发 Windows Mobile 应用程序所需的工具和功能的同时,创建一个功能强大的移动设备开发平台。

工具

本部分介绍 Windows Mobile 6 SDK 所提供的新开发工具,以及每个工具在应用程序开发过程中所起的作用。

Device Emulator 2.0

仿真程序始终都是移动应用程序开发的重要部分,允许您测试应用程序而无需访问物理设备。您能使用仿真程序(无需访问真实设备)进行的测试越多,工作起来就越轻松、迅速,并且花费也更少。Device Emulator 2.0 作为 Windows Mobile 6 SDK 的一部分而安装,它建立在 Device Emulator 1.0 的旧版基础之上,可通过模拟许多以前不具备的新设备状态和功能,利用真实的设备体验提供更高的保真度。正像 Device Emulator 1.0 那样,Device Emulator 2.0 是一款真正的 ARM 仿真程序。作为真正的 ARM 仿真程序,Device Emulator 2.0 运行与真实设备相同的可执行文件,因而无需为仿真程序管理真实设备所需的独立应用程序可执行文件。有了 Device Emulator 2.0,对于仿真程序和真实设备,只需要一组可执行文件即可。

Windows Mobile 6 SDK 安装过程自动使用 Device Emulator 2.0 替换 Visual Studio 2005 所安装的 Device Emulator 1.0。因此,所有 Visual Studio 2005 Windows Mobile 项目将使用 Device Emulator 2.0,并将能够利用 Device Emulator 2.0 提供的新功能和改进。

更快的执行速度

应用程序测试中最大的阻力之一就是应用程序启动和执行速度缓慢。为减少由仿真程序性能导致的延迟,Device Emulator 2.0 已进行了重要优化。由于每个应用程序不同,因此很难说出有多少单个应用程序受仿真程序优化的影响,但是与 Device Emulator 1.0 相比,Device Emulator 2.0 最多可将性能提高 40%。

仿真效果更好的设备

Device Emulator 2.0 增加了许多新的设备外观造型,使您可以在这些设备投入市场之前,就许多最新的设备外观造型测试应用程序行为。图 1 显示了设备仿真程序中的全新 320x320 显示器外观造型。320x320 显示器是 Windows Mobile 6 提供的新设备外观造型之一。

.

图 1. 设备仿真程序模拟新的 Windows Mobile 6 320x320 显示器外观造型

除许多新的 Windows Mobile 6 设备外,Device Emulator 2.0 还提供了一套丰富的 Pocket PC 2003SE、Smartphone 2003SE、Windows Mobile 5.0 Pocket PC 和 Windows Mobile 5.0 Smartphone 设备仿真程序。图 2 显示了设备仿真程序中的 Pocket PC 2003SE 设备和 Windows Mobile 5.0 Smartphone。

.

图 2. 模拟 Pocket PC 2003SE 和 Windows Mobile 5.0 Smartphone 的设备仿真程序

无论 Device Emulator 2.0 是模拟新 Windows Mobile 6 设备还是模拟旧式设备之一,该仿真程序都仍然提供本部分所讨论的所有新功能。

电源状态仿真

就本质而言,移动设备大部分时间使用的是电池电源,只是偶尔连接交流电源。当设备的电池电量级别变得非常低时,应用程序可能需要采取特定操作,以避免在全部电池电量耗尽时丢失数据。现在,为了能够测试电源状态变化对应用程序的影响,Device Emulator 2.0 引入了电源状态仿真。

.

图 3. 设备仿真程序的电源状态配置控制

如图 3 所示,仿真程序配置对话框允许您通过选中或清除“电池:”复选框,在使用电池电源和连接交流电源两种仿真程序状态之间进行切换。当状态为使用电池电源时,还可以设置电池电量级别百分比。仿真程序同设备一样,对这些电源状态和电量级别方面的变化做出反应。仿真程序显示相应的图标和消息;它还触发相应的“状态和通知代理”事件。

电话情景模式仿真

Device Emulator 2.0 支持三个新的电话情景模式:耳机、扬声器和车载套件。如图 4 所示,通过选中仿真程序配置对话框上的相应复选框,可以启用这些情景模式中的每个情景模式。选中情景模式复选框时,仿真程序的行为就好像您已插入了耳机、启用了扬声器或连接了车载套件一样,并会触发所有相应的“状态和通知代理”事件。

.

图 4. 设备仿真程序的情景模式配置控制
蜂窝仿真程序

现在使用的大多数 Windows Mobile 设备都有电话和其他无线通信功能。在很多情况下,您都可能希望应用程序与这些通信功能交互。您可能只是想在电话响铃的时候,将应用程序播放的音乐的音量减小;或者,可能需要加入一些涉及与通信硬件更密切地合作的更为复杂的功能。无论哪种情况,开发这些类型的应用程序在过去一直都很困难,而最大的难点在于测试此类应用程序。

为了解决测试此类应用程序的困难,Windows Mobile 6 SDK 包含了蜂窝仿真程序。利用蜂窝仿真程序,您可以在设备仿真程序内测试应用程序在不同蜂窝通信情况下的行为。图 5 显示了蜂窝仿真程序。

.

图 5. 利用蜂窝仿真程序可以在设备仿真程序内测试电话和通信行为

蜂窝仿真程序是一个功能强大的工具,可用来测试当蜂窝通信的状况变化时应用程序的行为。蜂窝仿真程序允许您执行一些简单的测试,例如通过仿真程序拨打电话、接听来电和挂断电话等。它还为 SMS 消息提供类似功能。对于需要测试更复杂功能的开发人员而言,蜂窝仿真程序还支持修改 SIM 配置以及模拟 2G 网络和 3G 网络之间的切换。所有这些测试不需要物理设备便可完成。

要将蜂窝仿真程序和设备仿真程序一起使用,首先需要将蜂窝仿真程序与设备仿真程序相关联。创建关联非常容易。

  • 记下蜂窝仿真程序左下角显示的 COM 端口号;在图 5 中为 COM4。

  • 在“设备仿真程序”菜单中选择“文件”,然后单击“配置…”,以打开“仿真程序属性”对话框

  • 在“仿真程序属性”对话框中,单击“外围设备”选项卡。

  • 将蜂窝仿真程序中的 COM 端口号输入到图 6 所示的“串行端口 0”中。如果在下拉列表中找不到 COM 端口号,您可以自己输入。

  • 单击“确定”关闭“仿真程序属性”对话框。

  • 要执行软重置,请在“文件”菜单上单击“重置”,然后单击“软”。

当仿真程序完成重置过程后,您会看到仿真程序现在显示蜂窝服务可用。

.

图 6. 输入蜂窝仿真程序端口号以便为设备仿真程序启用蜂窝服务仿真
FakeGPS

广泛使用的低成本全球定位系统 (GPS) 设备与 Windows Mobile 5.0 中引入的易于使用的 GPS 中间驱动程序相结合,为开发人员提供了轻松定位他们的应用程序的机会。在挑战定位应用程序的历史过程中,人们一直在寻找一个好的方法来对它们进行测试。Windows Mobile 6.0 通过 FakeGPS 实用程序解决了此问题。

FakeGPS 实用程序允许您轻松地测试定位应用程序,而无需访问活动的 GPS 设备或活动的 GPS 源。您可以创建一个包含 GPS NMEA 消息列表的简单文本文件,将该文本文件复制到您设备上的 \Program Files\FakeGPS\GPS 文件夹中,然后启用 FakeGPS。以下是示例 FakeGPS 输入文件的一部分。

$GPGLL,4738.0173,N,12211.1874,W,191934.767,A*21
$GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E
$GPGSV,3,1,9,8,71,307,43,27,78,59,41,3,21,47,0,10,26,283,40*77
$GPGSV,3,2,9,29,13,317,0,28,37,226,37,13,32,155,36,19,37,79,42*42
$GPGSV,3,3,9,134,0,0,0*46
$GPRMC,191934.767,A,4738.0173,N,12211.1874,W,0.109623,12.14,291004,,*21
$GPGGA,191935.767,4738.0172,N,12211.1874,W,1,06,1.4,32.9,M,-17.2,M,0.0,0000*75
$GPGLL,4738.0172,N,12211.1874,W,191935.767,A*21
$GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E
$GPRMC,191935.767,A,4738.0172,N,12211.1874,W,0.081611,15.81,291004,,*2A

FakeGPS 与 GPS 中间驱动程序结合使用,将来自该文本文件的消息路由到读取 GPS 源的所有应用程序。因为 FakeGPS 实用程序直接使用 GPS 中间驱动程序,所以您可以使用它在真实设备和设备仿真程序上测试您的应用程序,而无需对程序进行任何修改。要激活 FakeGPS 数据源,请使用 FakeGPS 实用程序选择所需的输入文件,然后选择图 7 所示的“启用”选项。

.

图 7. 设置 FakeGPS 源以启用定位应用程序的测试
安全配置管理器

如果您辛辛苦苦地开发出应用程序,但在用户设备上安装时却突然失败,没什么比这更令人沮丧的了。不幸的是,如果您未对在最终用户设备的安全设置下运行的应用程序进行测试,有时会发生此情况。避免产生安全相关问题的最佳方法是将安全规划作为应用程序设计、开发和测试过程的一个核心部分。这正是安全配置管理器的用途。

设备安全管理器运行在台式机上,提供两个基本服务。设备安全管理器显示当前连接到台式机的设备或仿真程序的当前安全设置(在 Windows XP 上通过 Microsoft ActiveSync® 连接,在 Vista 上通过 Windows Mobile Device Center (WMDC) 连接)。显示的信息包括设备安全策略、各个安全设置的列表,以及安装到每个设备证书存储中的证书的列表。

设备安全管理器还允许您使用公共安全策略配置仿真程序,从而允许您充分地测试不同安全策略对您应用程序的影响,而无需真实设备。图 8 显示了刚刚将仿真程序配置为具有一层提示安全策略后的设备安全管理器。

.

图 8. 更新仿真程序安全策略后的安全配置管理器

使用设备安全管理器,可以充分利用仿真程序轻松地对应用程序进行测试,同时确保应用程序在不同安全策略下按预期方式运行。

注意:

有关 Windows Mobile 安全性的详细信息,请参阅 Windows Mobile 开发人员中心或 Mobile2Market 常见问题。

CabSignTool

在分发应用程序之前,您通常必须使用相应的证书来签署应用程序可执行文件和安装文件,以便将您的组织标识为该应用程序的发布者。由于安全原因,必须签署用于安装该应用程序的所有应用程序可执行文件(*.dll 和 *.exe)以及 CAB 文件。签署每个单独的可执行文件、构建 CAB 文件,然后再签署 CAB 文件,这个过程很费时,尤其是在应用程序由几个可执行文件组成时。CabSignTool 实用程序是一个命令行实用程序,它将您从签署应用程序的各个部分的繁琐工作中解脱出来,从而简化了应用程序签署过程。

CabSignTool 实用程序一次可以签署一个 CAB 文件和所有包含的可执行文件。您只需构建应用程序可执行文件并创建 CAB 文件,而无需签署所有文件。CabSignTool 实用程序然后将 CAB 文件内容分解、签署每个可执行文件、重新组合并入了可执行文件的已签署版本的 CAB 文件,然后签署该 CAB 文件。CabSignTool 实用程序可以让您选择是使用单个证书同时签署 CAB 文件和可执行文件,还是使用不同的证书分别签署可执行文件和 CAB 文件。

Hopper

设备上的移动应用程序往往持续运行数周或数月而不关闭。在这么长的时段内长时间使用应用程序有时可能会暴露应用程序中的一些问题,而这些问题通过传统的应用程序测试是难以发现的。要发现这些问题,必须在测试周期过程中使应用程序承受其在部署后将会经历的同样类型的压力。Hopper 实用程序提供了一种执行此类压力测试的方法。

Hopper 实用程序模拟用户在应用程序内的随机位置执行快速单击操作。这会使应用程序承受巨大的压力,其所执行的非结构化应用程序使用程度能够暴露执行传统应用程序功能测试时不易发现的应用程序错误。Hopper 实用程序可用于对单一应用程序进行压力测试,或是在纳入更大随机性的情况下(除了在各个应用程序内随机执行单击操作外,还随机在应用程序之间进行切换)同时对几个应用程序进行压力测试。应在所有的应用程序测试中都使用 Hopper 实用程序。同样是这个实用程序,也可用于测试 Windows Mobile 设备来确保设备的稳定。在测试中使用 Hopper 实用程序不仅可以验证应用程序的稳定性,还可以验证应用程序并未给设备带来不稳定性。

Local Server Framework

Local Server Framework 是一些工具和类,它们专为简化对依赖与远程服务器通信的移动应用程序进行测试而设计。为了帮助简化移动应用程序的开发,可以通过 Local Server Framework 建立一个虚拟网络和服务器,接收应用程序发出的网络调用并返回程序所要求的结果。通过使用受到良好控制的本地服务器环境,可以更轻松地将移动应用程序中由外部网络导致的问题或服务器问题与程序中发生的那些问题加以区分。

示例

Windows Mobile 6 SDK 提供了几个您可能会觉得有帮助的示例。这些示例涉及在开发 Windows Mobile 6 应用程序时可能会遇到的大部分主题,可以通过它们节省大量时间,还可以将它们作为学习工具。以下是几个最值得注意的示例。

UILayout

本示例展示了如何构建能够动态地适应设备外观造型差异的自用应用程序。本示例涉及如何整合停靠、定位和其他显示管理功能。本示例还包含一个用于封装此显示逻辑大量内容的类 ScreenLib。ScreenLib 类以可重用性为设计宗旨,可以轻松地调整它来适应您自己的应用程序。

RingtoneManager

本示例展示了新 Windows Mobile 6 声音 API 的使用。

BasicRecognition、InkNotes 和 InkSerialization

这些示例展示了 WISP Lite API 的几种用途。所涉及的主题包括对基于手写的输入执行文本识别、在应用程序内使用基于手写的输入以及将手写内容存储在文件中。

GPS

本示例展示了如何在托管应用程序内访问 GPS Intermediate Driver。该示例包括用于从托管应用程序提取本机调用详细信息的所有必需包装方法。

.NET Compact Framework 2.0

所有 Windows Mobile 6.0 设备的 ROM 中都包括 .NET Compact Framework 2.0 SP1。这使您可以充分利用 .NET Compact Framework 2.0 所提供的丰富功能以及在 .NET Compact Framework 1.0 基础上进行的众多改进,而不必关心是否需要将 .NET Compact Framework 2.0 运行时与应用程序一并加以部署。甚至连 .NET Compact Framework 1.0 应用程序在 Windows Mobile 6 设备上的运行情况都会得到改善,因为 .NET Compact Framework 1.0 应用程序与 .NET Compact Framework 2.0 完全兼容,所以能够在 Windows Mobile 6 设备上运行,而且不必对程序进行任何更改便可充分利用 .NET Compact Framework 2.0 的改进。.NET Compact Framework 2.0 进行了许多改进,这些改进旨在提高开发人员生产力、增强与完整 .NET Framework 的保真度和加大对设备功能的支持。本部分介绍 .NET Compact Framework 2.0 部分最值得关注的功能。

用户界面功能得到了改进

尽管 .NET Compact Framework 2.0 的大量改进遍及各处,但许多最明显的改进都是针对与用户界面有关的功能。

Windows 窗体控件

控件是应用程序用户界面的构建基块。许多应用程序的可用性与应用程序对可用控件的利用情况有直接关系。.NET Compact Framework 2.0 提供了许多新的控件;这些新控件有助于简化应用程序用户界面设计以及为用户提供改进的体验。

MonthCalendar 和 DateTimePicker 控件

作为新控件的一部分,.NET Compact Framework 2.0 提供了两个用于显示和输入基于日期的信息的控件:MonthCalendar 控件和 DateTimePicker 控件。图 9 中显示了这两个控件。如果想要在应用程序中包括日历的外观并使其在窗体上始终可见,MonthCalendar 控件会有帮助。DateTimePicker 非常适合用于显示尺寸有限的移动设备;日期和时间信息显示在看似 TextBox 控件的控件中,但当用户需要输入数据时,DateTimePicker 控件会显示完整的日历。

.

图 9.MonthCalendar 控件和 DateTimePicker 控件。

WebBrowser 控件

对于想要整合基于 Rich HTML 显示的应用程序,.NET Compact Framework 2.0 提供了图 10 中所示的 WebBrowser 控件。WebBrowser 控件提供了许多事件,应用程序可以通过它们跟踪用户与 WebBrowser 控件内容的交互;必要时应用程序可以通过自定义行为响应用户交互事件。

.

图 10. 显示 Windows Live 移动搜索页面的 WebBrowser 控件

Notification 控件

Notification 控件是新控件中最值得关注的控件之一。可以使用 Notification 控件向用户显示消息,而不会更改用户当前活动的上下文。还可以通过 Notification 控件在弹出式气球中显示消息,这与 Windows Mobile 设备显示电池电量不足消息的方式类似。

其他控件

本部分所提到的控件只是一小部分。除了此处提及的控件之外,.NET Compact Framework 2.0 还包括许多其他控件,其中有 StatusBar 控件、针对 Smartphone 的 DataGrid 控件和 UserControl 派生的自定义控件等等。

对设备外观造型差异的支持

Windows Mobile 设备有许多不同的外观造型,而且新的外观造型在不断出现。为确保应用程序可以在 Windows Mobile 系列设备上顺利地工作,需要对应用程序用户界面进行设计,以适应设备屏幕尺寸、形状和分辨率上的差异。为了减轻您在处理这些设备差异所涉及的琐碎事务上的工作量,.NET Compact Framework 2.0 提供了几项新功能,用于简化具有适应能力的应用程序用户界面的创建。

在这些新功能中,最值得注意的是添加了控件停靠和控件定位功能。控件停靠和控件定位有助于使您的应用程序用户界面的适应能力更强,因为通过使用停靠和定位功能,可以提供有关控件应如何响应显示区域变化的默认行为。

停靠控件时,会将控件与其父控件的边缘对齐。例如,如果将控件配置为停靠在其父控件的左边缘,该控件的位置将会靠着父控件的左边缘,并沿着父控件的左边缘填充整个区域,如图 11 所示。当设备外观造型差异导致父控件尺寸发生变化时,停靠的控件会自动调整其自身尺寸,以保持与父控件左边缘的对齐。

.

图 11. 横屏和纵屏上显示的停靠在其父控件顶部边缘的控件

定位控件表示控件的一个或多个边缘应与其父控件的相应边缘保持固定的距离。设备屏幕尺寸上的差异会使控件自动调整其尺寸和位置(必要时),以使定位边缘与父控件边缘之间始终保持指定的距离。图 12 显示了定位到父控件左、右、顶部及底部边缘的 TextBox 控件。

.

图 12. 横屏和纵屏上显示的定位到其父控件左、右、顶部及底部边缘的控件

在某些情况下,让应用程序调整其控件大小或移动其控件来适应设备屏幕区域尺寸上的差异可能不切实际。当应用程序拥有大量控件,而调整大小后对用户而言控件可能变得过小而使用户无法以适当的方式与其进行交互时,通常会出现这种情况。在这种情况下,较好的解决方案是允许用户滚动应用程序显示区域,以查看屏幕边缘之外的控件。使用 .NET Compact Framework 2.0 时,无需进行任何特殊的工作来将滚动功能整合到应用程序中。应用程序显示时,.NET Compact Framework 2.0 会自动检测是否存在任何受显示尺寸限制而无法看到的控件,并在必要时为应用程序窗体添加滚动条。.NET Compact Framework 2.0 还提供了所有滚动条处理功能;因此,应用程序不需要做任何特殊处理,用户便可通过滚动窗体来查看隐藏的控件。

设备不仅在显示尺寸上有区别,在显示分辨率上也存在差异。如果不对这些分辨率差异加以考虑,那么最初设计用于 96 每英寸点数 (dpi) 显示的应用程序在 192 dpi 的设备上会显示得非常小,并呈压扁状。为能正常显示,控件需要进行缩放以适应新的显示分辨率。使用 .NET Compact Framework 2.0 时,处理这些分辨率差异会变得简单,因为 .NET Compact Framework 2.0 会自动缩放所有控件,以将设计时分辨率和运行时分辨率之间的差异考虑在内。

键盘交互和基于键盘的导航

.NET Compact Framework 2.0 中一项非常重要的改进是,为配备小键盘或键盘的设备提供了更好的支持。在 .NET Compact Framework 2.0 中,所有控件现在都接收 KeyUp、KeyDown 和 KeyPress 事件,这使您可以在应用程序中整合自定义键盘处理功能。通过新添加的 Form.KeyPreview 属性,您还可以选择是将键盘事件发送到各个控件,还是将所有控件键盘事件发送到包含这些控件的窗体。

.NET Compact Framework 2.0 还加入了对将控件设置为制表位及设置控件 Tab 键顺序的支持。这样,使用支持键盘的设备的用户便可不必使用笔针,而是使用 Tab 键在应用程序控件之间进行移动。

数据功能得到了增强

就本质而言,LOB 应用程序的大量时间花费在管理数据和与数据进行交互上。对于创建 LOB 应用程序的开发人员来说,有效率而且易用的数据类是必不可少的。Windows Mobile 6 通过在 ROM 中加入 SQL Server Compact Edition,为 LOB 应用程序开发人员提供了他们所需的完全关系型的数据库支持。借助 ROM 中的 SQL Server Compact Edition,就可以利用本地安装的关系数据库 SQL Server Compact Edition 的功能和能力,而不必在应用程序部署中加入数据库安装组件。

无论您是使用 DataSet 类和 SQL Server Compact Edition 来处理关系数据,还是使用 XML 类来处理分层数据,.NET Compact Framework 2.0 都提供了所需的易用、有效率而且丰富功能的类,以减少编程工作量,同时提高应用程序性能。

注意:

除本部分中介绍的许多出色的新功能之外,还可以参阅以下“性能更强,资源管理效率更高”部分中对改进的数据类运行时性能的介绍。

关系数据

.NET Compact Framework 2.0 提供的一种关系数据类对应用程序的影响最大,它就是新增的 SqlCeResultSet 类。SqlCeResultSet 类提供了直接指向 SQL Server Compact Edition 数据库的游标,该游标可以进行更新和滚动。SqlCeResultSet 类不是像 DataSet 类那样在内存中复制大量数据库数据,而是直接与 SQL Server Compact Edition 数据库引擎协作,因此不需要复制数据便可提供数据更新和游标滚动功能。

与 DataSet 类相比,SqlCeResultSet 类的体系结构可以大幅度减少应用程序占用的内存量。在许多情况下,SqlCeResultSet 可以将应用程序必需的内存量减少几兆字节。除了减少内存消耗之外,SqlCeResultSet 的速度要比 DataSet 类快得多。SqlCeResultSet 的速度通常是 DataSet 类的 3 到 5 倍。

XML

.NET Compact Framework 2.0 提供了几项增强功能,用于处理基于 XML 的数据。这些更改简化了 XML API 的使用,并使 XML API 在与完整 .NET Framework 所提供的功能的一致性上得到大幅度提高。作为这些增强功能的一部分,.NET Compact Framework 2.0 添加了对 XML 查询语言 XPath 的支持;XPath 可以大幅度减少导航 XML 数据所需的编程工作量,而且与使用显式导航 API 时相比,导航 XML 数据时的效率往往更高。还添加了 XmlSchema 类及相关的类,这样便可以编程方式处理和创建 XML 架构。

其中一个呼声较高的功能(XML 序列化)现在已经提供。.NET Compact Framework 2.0 现在加入了 XmlSerializer 类及相关的类,如 XmlElement 和 XmlAttribute 类。由于添加了这些类,现在可以轻松地将应用程序对象以 XML 形式保留和还原。

新的 XmlSerializer 类替代了 .NET Compact Framework 1.0 中使用的 Web 服务 XML 序列化实现。所有 Web 服务 XML 序列化和反序列化现在都通过新的 XmlSerializer 类来执行。新的 XmlSerializer 类的速度能够稳定地保持在 .NET Compact Framework 1.0 中 Web 服务 XML 序列化实现速度的二到三倍。归功于新的 XmlSerializer 类,应用程序从 .NET Compact Framework 2.0 应用程序进行 Web 服务调用所花费的总时间现在远远少于从 .NET Compact Framework 1.0 应用程序进行相同调用所花费的时间。

性能更强,资源管理效率更高

Windows Mobile 6 在 ROM 中加入了 .NET Compact Framework 2.0,从而提高了托管应用程序的性能。.NET Compact Framework 2.0 在 .NET Compact Framework 1.0 的基础上进行了重大性能改进。性能改进几乎影响到了应用程序执行的每个方面,包括应用程序资源的恢复。

为改进性能,.NET Compact Framework 2.0 运行时进行了全面的审查和返工。付出的努力得到了回报。尽管难以确定性能增强会给任何特定应用程序产生怎样的影响,但 .NET Compact Framework 2.0 运行时许多区域的执行速度可能接近 .NET Compact Framework 1.0 中相应操作执行速度的一倍半。其他区域进行的改进更为显著,如虚拟或非虚拟方法调度,在许多情况下,其速度几乎是 .NET Compact Framework 1.0 的两倍半。

除整体运行时性能改进之外,还对改进数据类的性能给予了特别关注。.NET Compact Framework 2.0 DataSet 类加载数据的速度是 .NET Compact Framework 1.0 版本的三到四倍。XmlTextReader 类进行了类似的性能改进,现在它读取 XML 文件内容的速度几乎是 .NET Compact Framework 1.0 的三倍。

除了许多应用程序运行时性能改进之外,.NET Compact Framework 2.0 还使垃圾回收器的性能得到巨大改进。一般情况下,.NET Compact Framework 2.0 垃圾回收器恢复内存的速度是 .NET Compact Framework 1.0 的七倍。大型对象分配的管理和恢复是与其他内存分配分开进行的,尽管其速度在 .NET Compact Framework 1.0 中已经非常快了,.NET Compact Framework 2.0 垃圾回收器的速度却是它的四倍。表 3 提供了 .NET Compact Framework 2.0 性能改进的总览。

表 3. .NET Compact Framework 2.0 在 .NET Compact Framework 1.0 基础上进行的性能改进总览

任务

.NET CF 2.0 较之于 .NET CF 1.0 的性能改进

整体运行时执行

速度快一倍半(平均)

方法调度

速度快两倍半

DataSet 加载

速度快三到四倍

XmlTextReader 读取

速度快三倍

垃圾回收器内存恢复

速度快七倍

垃圾回收器大型对象恢复

速度快四倍

不但应用程序在使用 .NET Compact Framework 2.0 时比在使用 .NET Compact Framework 1.0 时的性能更高,而且在 Windows Mobile 6 设备上运行的 .NET Compact Framework 2.0 应用程序与在较早版本 Windows Mobile 设备上运行的同一 .NET Compact Framework 2.0 应用程序相比,前者的启动速度要比后者快 25%。Windows Mobile 6 设备上启动时间得到缩短是因为在设备 ROM 中安装了 .NET Compact Framework 2.0。与将 .NET Compact Framework 2.0 安装在 RAM 中的设备相比,单是将 .NET Compact Framework 2.0 安装在设备 ROM 中便可使应用程序启动速度提高 25%。

所有这些性能改进不但意味着用户对您的速度更快且响应更及时的应用程序更为满意,还加快了应用程序的开发速度,因为现在您等待的时间减少了。应用程序的启动和运行速度都更高,获得应用程序测试结果的时间也更短。

本机代码互操作性进行了重构

.NET Compact Framework 2.0 在 .NET Compact Framework 1.0 已有功能基础上增加了许多新功能。由于增加了如此多的新功能,.NET Compact Framework 2.0 应用程序仅使用托管代码所执行的工作就比在 .NET Compact Framework 1.0 应用程序中可以执行的工作多得多。即使使用这些众多的新功能,托管应用程序有时仍需要与本机代码进行交互。与 .NET Compact Framework 1.0 相比,.NET Compact Framework 2.0 提供的本机代码互操作性实现进行了显著改进,大幅度简化了通过托管应用程序代码与本机代码进行的交互并减少了混淆。

.NET Compact Framework 2.0 添加了组件对象模型 (COM) 支持,使托管应用程序可以直接调用 COM 组件。不必再像 .NET Compact Framework 1.0 所要求的那样,为使 COM 对象可访问而创建自定义本机库。

本机代码封送层进行了改进,以支持比过去多得多的数据类型。.NET Compact Framework 1.0 中的大部分数据封送限制已不存在。现在可以直接将大部分参数从托管应用程序传递到本机代码,而无需进行任何特殊的编程;这包括包含嵌入式类型(如字符串和数组)的类和结构。.NET Compact Framework 2.0 还通过 MarshalAs 属性提供了可自定义的参数封送。

对于那些需要处理要求使用窗口句柄的本机函数的开发人员来说,现在所有 .NET Compact Framework 2.0 Windows 窗体控件都提供了 Handle 属性。Handle 属性公开控件基础窗口的本机窗口句柄,可以将该属性传递给要求使用窗口句柄的本机方法。

SQL Server 2005 Compact Edition

所有 Windows Mobile 6 设备都将 SQL Server Compact Edition(一种企业质量关系数据库)安装在 ROM 中;对于 Pocket PC 和 Smartphone 设备都是如此。借助 ROM 中的 SQL Server Compact Edition,应用程序就可以充分利用本地的完全关系型数据库 (SQL Server Compact Edition),而不必在应用程序部署中加入数据库安装组件。这会减少部署支持的时间和成本。

注意:

使用 SQL Server 2005 Mobile Edition 创建的现有数据库文件与 SQL Server 2005 Compact Edition 完全兼容,而且无需对数据库文件进行修改即可使用。

功能丰富

SQL Server Compact Edition 是一个功能丰富的关系数据库,提供了完整的 SQL 语法,其中包括内部联接、外部联接和子查询。SQL Server Compact Edition 提供了完整的事务一致性,这种一致性确保了数据库始终保持一致的状态,即使是在应用程序崩溃或设备完全断电时也是如此。SQL Server Compact Edition 提供记录级、页面级和数据库级的锁定功能,这确保了数据库的完整性,即使是在多个线程或应用程序同时进行访问和更新的情况下,也是如此。一项针对 LOB 应用程序的重要功能是,SQL Server Compact Edition 支持的数据库大小高达 4 GB。

有亲切感

SQL Server Compact Edition 提供了 SQL Server 2005 SQL 实现的丰富子集,使您能够充分利用现有的 SQL Server 技能。您还可以充分利用现有的数据库编程技能,因为 SQL Server Compact Edition 为托管应用程序提供了一个 ADO.NET 库,并为本机应用程序提供了一个 OLEDB 库,这两个库都与 SQL Server 2005 的对应库保持一致。

SQL Server Compact Edition 与 SQL Server Management Studio 和 Visual Studio 2005 完全集成。通过 SQL Server Management Studio,可以创建新的 SQL Server Compact Edition 数据库、查看数据库对象、创建表、修改表以及执行交互式查询。图 13 所示的 SQL Server Management Studio 中显示的是 SQL Server Compact Edition 数据库中表、表列和表索引的列表。

.

图 13. 在 SQL Server Management Studio 中查看的 SQL Server Compact Edition 数据库表、表列和表索引

Visual Studio 2005 完全支持 SQL Server Compact Edition,其提供的面向数据的功能与为其他数据库提供的相应功能是相同的。使用 Visual Studio 2005 时,可以将 SQL Server Compact Edition 数据库作为数据源添加到项目中。添加 SQL Server Compact Edition 数据源时,Visual Studio 2005 的行为与其对 SQL Server 2005 数据库的行为相同;它会生成强类型 DataSet 派生的类,并将数据库表添加到 Visual Studio 2005“数据源”窗格中。可以完全像在使用 SQL Server 2005 时那样,将表和列从“数据源”窗格拖动到应用程序窗体上,Visual Studio 2005 会自动生成相应的控件和数据绑定代码。图 14 显示了“数据源”窗格中查看到的 SQL Server Compact Edition 数据库表。

.

图 14. Visual Studio 2005“数据源”窗格中 SQL Server Compact Edition 数据库的表

通过 Visual Studio 2005 Server Explorer,可以打开 SQL Server Compact Edition 数据库,并以交互方式浏览数据库内容。还可以通过 Server Explorer 打开数据库表,以查看、添加、修改和删除记录。

内置数据同步支持

设计移动 LOB 应用程序时必须处理的其中一个最重要的问题是数据同步策略。第一次将数据从企业数据库复制到移动设备时,设备和企业数据库都拥有相同的信息;不过,不久这两个数据库拥有的信息便会不同。用户方的活动可能会导致设备上的数据发生变化;类似地,整个企业其他地方的活动可能会导致企业数据库中的数据发生变化。您需要决定应用程序如何将设备数据库与企业数据库进行同步,以使两个数据库恢复到一致的状态。

没有一种策略能够适用于所有应用程序,这也是 SQL Server Compact Edition 自身直接支持几种不同数据同步机制的原因。如果大部分数据更改是对设备(例如,收集信息的公用事业读表器)数据副本进行的,SQL Server Compact Edition 为这样的应用程序提供了远程数据访问 (RDA)。RDA 是一种非常轻型的数据同步实用程序,用于跟踪对设备数据库所做的更改,及在以后将同样的更改应用到企业数据库。在更为复杂的情况下,SQL Server Compact Edition 提供了合并复制。合并复制是一种合作式的数据同步实用程序,用于跟踪对设备数据副本和企业数据副本所做的更改。对数据进行同步时,设备数据库和企业数据库都会交换其各自的数据更改历史,以使两个数据库保持一致。作为数据同步过程的一部分,合并复制会经历一个更改协调阶段,在该阶段中,将对双方的更改进行审查,以确定要交换的具体数据。更改协调阶段会自动检测可能已发生的任何有冲突的数据更改,并采取相应的措施。合并复制对更改冲突的处理是完全可配置的,可以进行自定义。合并复制还包括一些高级数据同步功能,这些功能不能供 RDA 使用:后台数据同步(又称异步复制)及进度事件。可以通过后台数据同步功能启动合并复制进程,使其在后台线程上运行。这便使主应用程序线程可以用于保持响应及时的用户界面。进度事件提供有关数据同步进程状态(包括每个表更改的交换时间及更改协调阶段进度)的应用程序定期更新。

RDA 和合并复制都通过 Web 服务器执行数据同步过程,数据更改通过超文本传输协议 (HTTP) 或安全超文本传输协议 (HTTPS) 进行传送。通过 Web 服务器执行数据同步带来了极大的灵活性,因为这使 SQL Server Compact Edition 数据库可以在设备能够连接到 Internet 时就与企业数据库进行同步,无论是通过像 WiFi 这样的高速连接还是速度较慢的移动电话连接,都是如此。

如果数据存储在用户桌面计算机上单独的数据库中,而不是存储在企业数据库中,SQL Server Compact Edition 为这样的应用程序环境提供了 SQL Server Compact Edition Access Database Synchronizer (ADS)。通过 ADS,可以使用用户桌面 Access 数据库中的数据填充设备上的 SQL Server Compact Edition 数据库。SQL Server Compact Edition 数据库会自动跟踪对设备数据库所做的更改。以后将设备插入底座时,SQL Server Compact Edition 会使用 ADS 将设备数据库更改应用到 Access 数据库。

安全

移动设备的可移植性要求遵循安全实践,以确保不会危及重要信息的安全。为保证 SQL Server Compact Edition 数据库中数据的安全,SQL Server Compact Edition 支持使用密码来保护数据库和对数据库内容进行加密。创建数据库时,可以轻松地设置用于保护和加密数据库的密码。以下是一个 SQL 语句,它在 C 盘上创建名为 SafeData.sdf 的数据库,将密码设置为 P@ssw0rd,并将数据库配置为对所有数据都加密。

Create Database "c:\SafeData.sdf" databasepassword 'P@ssw0rd' encryption on

将对数据库中存储的所有数据进行加密。成功地访问数据库内容的唯一方法是在打开数据库时提供正确的密码。以下示例显示了如何在 C# 程序内以编程方式创建受密码保护的加密数据库文件。

SqlCeEngine dbEngine =
new SqlCeEngine(@"data source=\My Documents\SafeData.sdf;password=P@ssw0rd;encrypt database=TRUE");
dbEngine.CreateDatabase();

除了提供安全数据库内容之外,SQL Server Compact Edition 还在使用 RDA 或合并复制与企业数据库进行同步时提供安全数据交换。RDA 和合并复制都支持通过 Internet 与后端数据库进行交换时,使用 HTTPS 对更改历史数据进行加密。

AJAX

Windows Mobile 6 具有更新版本的 Microsoft Internet Explorer® Mobile,其中包括运行基本 AJAX 应用程序时所需的 XML DOM 和 JavaScript 支持。这使您可以利用现有 ASP.NET、XML 和 JavaScript 技能来构建在 Windows Mobile 6 设备上运行的、功能丰富的基于浏览器的应用程序。

注意:

计划于 2007 年 5 月 1 日发布的 Windows Mobile 6 SDK Refresh 包括支持基本 AJAX 应用程序的 Windows Mobile 6 仿真器映像。

简化应用程序部署

将应用程序部署到最终用户后,才能说它是成功的。部署应用程序和为该部署过程提供支持非常耗时,而且可能会对可以用于开发新功能和应用程序的时间产生显著影响。Windows Mobile 6 纳入的许多增强功能可以减少您在管理和支持应用程序部署上花费的时间和精力。这些增强功能降低了应用程序部署的总成本,通过减少您在管理和支持应用程序部署上所花费的时间,Windows Mobile 6 让您可以有更多的时间来为应用程序添加功能和创建新的应用程序。

需要安装的软件更少

Windows Mobile 6 通过在每个 Windows Mobile 6 设备的 ROM 中加入 .NET Compact Framework 2.0 SP1 和 SQL Server 2005 Compact Edition,简化了托管应用程序和自用应用程序的部署。在 ROM 中提供 .NET Compact Framework 2.0 SP1 和 SQL Server Compact Edition 大幅度简化了应用程序的部署,并降低了为成功安装应用程序而必须为最终用户提供的支持级别。

在 ROM 中提供 .NET Compact Framework 2.0 SP1 和 SQL Server Compact Edition 的益处有很多。您拥有了一个定义明确的目标平台,它确保这些核心软件组件始终存在,且始终得到正确的安装。应用程序安装软件包的整体大小仍然较小,因为它仅包含应用程序组件。较小的安装软件包的下载和安装时间都较短,这简化了应用程序分发和应用程序更新的分发。较短的安装和下载时间还为改善用户体验创造了条件。

除了用户、部署和支持体验得到改善外,在设备 ROM 中安装 .NET Compact Framework 2.0 SP1 和 SQL Server Compact Edition 还为给应用程序提供更好的运行时环境创造了条件。将 .NET Compact Framework 2.0 SP1 和 SQL Server Compact Edition 安装在设备 ROM 中,这样它们便不会占用设备 RAM 的空间。减少在 RAM 中安装的软件为应用程序留出了更多的 RAM 空间来存储数据。

对基于 URL 部署的支持

为 Windows Mobile 6 上的 Internet Explorer Mobile 添加基本 AJAX 支持提供了新的应用程序分发途径。对于适合使用基于 AJAX 的解决方案的应用场景,只需以电子邮件发送相应的 URL 便可对应用程序进行部署。用户接收到该 URL 时,只需使用 Internet Explorer Mobile 浏览到该 URL,而不需要在设备上安装其他软件,因为 Internet Explorer Mobile 已具备了运行基本 AJAX 程序所需的一切条件。

代码签署得到了简化

Windows Mobile 安全策略的一个重要方面是使用证书来签署应用程序可执行文件和安装文件。在较大的应用程序中,正确签署应用程序可执行文件和安装文件的过程可能很冗长。新的 CodeSignTool 实用程序(本文前面提到过)让您可以通过执行一个命令来签署所有必需的文件,从而显著减少了签署应用程序安装文件的工作量。

构建一个在许多设备上运行的应用程序

Windows Mobile 设备的灵活性及强大的可编程性使得越来越多的人使用它们来实现各种目的。由于用途是如此的广泛,因此没有一种设备外观造型能够适用于所有人。为满足如此多样的用户需求,Windows Mobile 设备提供有多种外观造型。表 4 显示了部分常见的 Windows Mobile 设备外观造型。

表 4. 常见的 Windows Mobile 设备外观造型

尺寸

分辨率

触摸屏

176x220

96 dpi

240x320

131 dpi

320x240

131 dpi

320x320*

128 dpi

240x320 / 320x240

96 dpi

480x640/640x480

192 dpi

240x240

96 dpi

480x480

192 dpi

* Windows Mobile 6 中新增的分辨率

由于有这么多种类的外观造型可以使用,因此您必须确保所构建的应用程序能够适应设备外观造型的差异。您需要记住的是,Windows Mobile 设备支持的外观造型列表的内容正在不断得到扩充。Windows Mobile 6 包括许多新的功能和资源,目的是减少构建能够轻松地适应外观造型差异的应用程序所需的工作量。您将会发现,Windows Mobile 6 使得既能利用每个设备的特定能力,又能在多种设备外观造型上顺利工作的应用程序的构建变得前所未有的简单。

注意:

320x320 显示外观造型引入了一个新的分辨率和与之前外观造型略有不同的显示区域。请确保在您的应用程序测试中包括这个新的外观造型;否则,它与其他外观造型的差异可能会导致应用程序在采用该外观造型的设备上显示时遇到困难。

遵循安全最佳实践

最初的 Windows Mobile Pocket PC 设备包括的设备安全功能非常少。随着该平台的成熟,其安全性也日益提高。改进 Windows Mobile 平台安全性的趋势可能还将继续下去。为了最大限度减少与未来版本 Windows Mobile 的兼容性问题,现在就应着手将仅有的几个安全最佳实践整合到您的应用程序中。

您的应用程序应只向应用程序可执行文件所在的文件夹或“我的文档”文件夹写入内容。在未来的某个时间,可能需要具备特殊权限才能向这些文件夹以外的文件夹写入内容。 写入注册表时,只向 HKEY_CURRENT_USER 配置单元写入内容。与文件系统类似,在未来的某个时间,可能需要具备特殊权限才能向注册表的其他区域写入内容。

在所有设备上都统一的 API 集

Windows Mobile 设备提供了在所有 Windows Mobile 设备上都统一的 API 集。这是一个关键因素,它使构建能够在所有 Windows Mobile 设备上工作的单一应用程序可执行文件变得切实可行。在所有 Windows Mobile 设备上,Win32® API 和 .NET Compact Framework 2.0 都是全面和一致的。拥有一致的 API 集减轻了为不同设备类型管理和分发单独的可执行文件所需进行的工作。

确实需要做特殊考虑的一个领域是设备显示,本部分的其余内容将对此做专门介绍。

设备仿真

设备仿真器是开发能够在不同外观造型设备上成功运行的应用程序的最重要工具之一。借助于设备仿真器,可以在许多不同外观造型的设备上测试应用程序而不必访问采用这些外观造型的物理设备。Visual Studio 2005 和 Windows Mobile 6 SDK 提供的仿真器映像加在一起超过了 25 种,让您可以在多种外观造型的设备上全面地测试应用程序的行为。有关该仿真器支持的众多设备外观造型的示例,请参阅图 15。

.

图 15. 几个设备仿真器外观造型示例

Visual Studio 2005 设计时支持

Visual Studio 2005 窗体设计器提供了快速易用的应用程序用户界面构建机制。使用该设计器时,在创建和修改窗体外观后能够立即看到结果。这种所见即所得 (WYSIWYG) 设计时体验并不限于采用静态用户界面的应用程序。Visual Studio 2005 窗体设计器能够识别外观造型,因此可以通过它查看应用程序窗体在不同外观造型上的外观。此项功能节约了大量时间,因为它使您不必执行应用程序就能看到其在不同外观造型上的效果。

要查看从纵向向横向旋转时窗体的显示效果,可以右键单击窗体,然后将窗体向右或向左旋转 90 度。可以再次单击窗体,将其旋转回纵向显示。图 16 显示了 Visual Studio 2005 窗体设计器中一个从纵向向横向旋转的窗体。

.

图 16. 使用 Visual Studio 2005 窗体设计器查看从纵向向横向旋转时窗体布局的变化

为查看其他显示尺寸和显示分辨率变化的效果,Visual Studio 2005 提供了一个仅限设计时使用的属性“外观设置”。

选择新的“外观设置”值时,Visual Studio 2005 窗体设计器会按窗体在所选外观造型中出现时的样子显示窗体。图 17 显示了图 16 中的窗体在选择“Windows Mobile 6 Professional Square”(Windows Mobile 6 专业方形)外观设置时的样子。请注意,其中添加了滚动条以显示窗体底部的控件。

.

图 17. 在 Visual Studio 2005 窗体设计器中的正方形外观设置内查看图 16 中的窗体

运行时和 API 支持

支持设备外观造型上的差异是 Windows Mobile 应用程序开发至关重要的基础。为帮助您实现对设备外观造型差异的支持,.NET Compact Framework 2.0 类和运行时提供了对动态响应设备外观造型变化的内置支持。与此类似,本机应用程序开发人员也有几个能够提供类似支持的 API。

托管应用程序

.NET Compact Framework 2.0 提供了几个针对托管应用程序的新功能,它们使运行时能够自动调整控件的大小和位置:控件停靠、控件定位、自动滚动和自动缩放。停靠控件靠着其父控件的一条边放置,并沿该边填满整个区域。为响应显示尺寸上的差异,控件会自动调整其大小以始终填满父控件的整条边。请参阅本文前面图 11 中停靠控件的示例。

定位控件在该控件的一条或多条边与父控件的边之间保持固定距离。为响应显示尺寸上的差异,定位控件会自动调整其自身的大小,以在控件的定位边与父控件的边之间保持适当的距离。本文前面的图 12 中显示有定位控件。

.NET Compact Framework 2.0 通过 Form 控件上的 AutoScroll 和 AutoScaleMode 属性提供自动滚动和自动缩放功能。当窗体的 AutoScroll 属性设置为 true 时,在显示尺寸的变化导致看不到窗体的某些控件时,窗体会自动添加滚动条。设备外观造型差异并不限于尺寸的变化,不同设备外观造型的分辨率也可能不同。设备分辨率上的差异可能导致应用程序窗体的控件显得非常小或非常大。通过将窗体的 AutoScaleMode 属性设置为 AutoScaleMode.Dpi,窗体控件会自动缩放其大小,以便能够在不同的显示分辨率下正确地显示。

本机应用程序

Microsoft C++ 提供了二十多个函数和宏,用于处理与适应设备显示差异有关的常见任务,尽管这对 Windows Mobile 6 而言并不是什么新功能。可以在位于 %Program Files%\Microsoft Visual Studio 8\ VC\ce\atlmfc\include 文件夹的 DeviceResolutionAware.h 头文件中找到它们。表 5 只显示了上述函数和宏中的几个。

表 5. 可以协助适应设备显示差异的部分自有函数和宏

函数或宏

说明

GetDisplayMode

返回标识当前显示方向为纵向、横向还是正方形的值。

SCALEX、SCALEY、SCALERECT、SCALEPT

根据需要调整该值以适应当前显示分辨率。

StretchIcon

调整图标的大小以适合当前显示区域。

RelayoutDialog

将数据从一个对话框复制到另一个对话框,当用户在显示对话框的情况下更改设备显示方向时会有帮助。这使应用程序能够显示另一个与原始对话框具有相同控件的对话框,但其尺寸更适合于当前分辨率。

FixupDialogItem

解决应用程序更改对话框大小时会发生的常见问题;例如,在 ListBox 控件或 ComboBox 控件的选择滚动出显示区域时将其滚动进视野内。

支持资源

为减少将外观造型适应能力纳入应用程序所花费的时间,Microsoft 提供了几个资源来为您提供协助。这些资源对实现应用程序时需要遵循的许多最佳实践做了说明。这些资源还提供了一些有效代码,能够处理与处理设备差异有关的许多常见问题。不仅可以将该代码用作如何解决设备外观造型差异的示例,还可以将该代码纳入到应用程序中并立即加以利用。

面向托管应用程序开发人员的资源

Microsoft 模式和实施方案小组为托管应用程序开发人员提供了移动客户端软件工厂。移动客户端软件工厂是用于应对移动开发人员面临的许多最常见情况的最佳实践、源代码、组件和示例的组合。针对处理设备外观造型差异的问题,移动客户端软件工厂提供了 OrientationAwareControl。OrientationAwareControl 与 Visual Studio 2005 协同工作,让您可以为包含一个或多个子控件的控件建立图形化布局;控件布局定义的一部分工作便是为每个不同的外观造型定义不同的布局。

使用 OrientationAwareControl 时,首先按照希望控件在一种外观造型中出现时的样子定义控件布局。然后在 Visual Studio 2005 中更改外观造型,以了解使用新外观造型查看时控件的外观。如果对在新外观造型上查看的控件外观不满意,可以调整控件的新外观造型布局而不影响控件原始外观造型的布局。控件会为每个不同的外观造型保留单独的布局信息,供在运行时使用。应用程序运行时,OrientationAwareControl 会以适合于当前外观造型的布局呈现。例如,如果应用程序是在显示尺寸为 240x320、分辨率为 96 dpi、方向为纵向的设备上运行,则 OrientationAwareControl 会使用您为 240x320 显示尺寸、96 dpi 分辨率和纵向方向定义的布局。如果用户将设备方向旋转为横向,则 OrientationAwareControl 会以为 320x240 显示尺寸、96 dpi 分辨率和横向方向定义的布局进行显示。对于显示分辨率和尺寸变化,OrientationAwareControl 的作用方式类似。

另一个面向托管应用程序开发人员的重要资源是移动行业 Solution Accelerator 工具包。该工具包为 LOB 开发人员提供了演示如何构建 Windows Mobile LOB 应用程序的资源。该工具包包括带有详尽注释的完整源代码、示例数据库和 100 多页的文档。该工具包包括以不同角色的用户(包括客户服务、仓库工人和送货司机)为目标用户的应用程序组件。除了提供应用程序开发指导外,该工具包还包括在企业规模上成功部署移动 LOB 应用程序的最佳实践。

面向本机应用程序开发人员的资源

Windows Mobile 6 SDK 包括供本机应用程序开发人员使用的 UILayout 示例。此示例演示了如何实现用户界面会自动调整以适应设备显示差异的本机应用程序。该示例的 ScreenLib 类通过它提供的许多方法(包括用于停靠控件、定位控件、对齐控件、优化应用程序控件布局的方法及众多其他方法)完成大量与用户界面有关的工作。ScreenLib 类以可重用性为设计宗旨,因此可以将该类直接纳入到自己的应用程序中,利用它提供的众多功能。

常规资源

有关构建能够在全系列 Windows Mobile 设备外观造型上有效工作的应用程序的最新信息,请访问 Windows Mobile 调整您的应用程序页面。“Windows Mobile 调整您的应用程序”页面是您的一站式资源库,它提供了与开发可调整式 Windows Mobile 应用程序有关的所有内容(包括白皮书、网络广播、公告及其他内容)。

增强用户体验

Windows Mobile 6 提供了专注于增强用户体验的新功能。这些功能通过提供新的用户交互方式和新的设备状态变化响应方式,为开发人员提供了改进其应用程序可用性的机会。

改进了外观

Windows Mobile 6 彻底重构了设备外观。显示比旧版本要清晰和简洁得多。进行了最显著改动的其中一个地方是 Pocket Outlook 屏幕。这些屏幕不仅提供了更加清晰和简洁的显示,还简化了信息的查看和导航。只需在 Windows Mobile 6 设备上运行,不必做任何更改,您的应用程序就会从上述的大部分改进中受益。

Windows Mobile 提供了许多标准对话窗体,包括联系人选择对话框和消息传送窗体。在您的应用程序中使用的这些标准对话框与在 Pocket Outlook 中使用的窗体相同,因此通过您的应用程序查看时与直接在 Pocket Outlook 中使用时它们都具有相同的改进后的外观。类似地,图片选择对话框也从整体显示改进中受益。对于使用 .NET Compact Framework 2.0 DocumentList 类以便用户查找和打开文件的应用程序,也是如此。图 18 显示了新的 Windows Mobile 6 图片选择对话框。

.

图 18. 新的 Windows Mobile 6 图片选择对话框

类似地,图片选择对话框也从整体显示改进中受益。对于使用 .NET Compact Framework 2.0 DocumentList 类以便用户查找和打开文件的应用程序,也是如此。

通过新的手写 API 提供新输入选项

Windows Mobile 6 包括一个轻型版本的 Tablet PC WISP 手写 API,称为 WISP Lite。WISP Lite 为所有 Windows Mobile 6 Classic 和 Windows Mobile 6 Professional 设备带来了丰富的手写功能,强大而且灵活性高。WISP Lite 能够完全兼容 Tablet PC 手写数据,并包括用于手写内容收集、识别、呈现和手写数据管理的 API。WISP Lite 比以前的 RichInk 控件提供了高得多的保真体验。

通过新的声音 API 提供增强的音频体验

Windows Mobile 6 包括一组能够播放以前不支持的许多声音文件格式的新声音 API 集。新的声音 API 能够播放 MP3、MID、WMA 和 WAV 文件。为响应开发人员的要求,新的声音 API 包括了接受设备配置文件的选项,以使设备设置为静音或振动时不播放声音。

新的声音 API 包括用于检索与常见事件(例如,已知的呼叫方电话铃声或漫游电话铃声)关联的声音文件的函数;还可以更改与这些事件关联的声音文件。可按同步或异步方式播放声音文件;并可以选择让 API 在异步播放结束时通知应用程序。新的 API 还包括在 RAM、ROM 和安装的存储卡中搜索声音文件位置的函数。

新的设备状态信息

“状态和通知代理”使应用程序能够获知设备状态变化,并以智能方式对这些状态变化做出反应。除了 Windows Mobile 5.0 所支持的 100 多个“状态和通知代理”状态值外,Windows Mobile 6 额外又增加了几个状态值。Windows Mobile 6 提供了基于 Internet 协议语音 (VoIP) 电话呼叫的状态信息,包括电话号码、运营商名称以及其他信息。Windows Mobile 6 还添加了设备锁定的状态信息。现在提供了键盘锁定状态、设备锁定状态和 SIM 锁定状态变化的状态信息。

开始构建 Windows Mobile 6 应用程序所需的内容

着手开发面向 Windows Mobile 6 的应用程序是件容易的事。事实上,您多半已经具备了开发所需的大部分条件。

要开发第一个 Windows Mobile 6 应用程序,需要安装几个软件。本部分介绍您需要的软件列表以及各软件是必备软件、建议安装的软件还是可选软件。还包括对各软件用途的简短说明。

必备软件

必备/可选

说明

Visual Studio 2005 Standard Edition、Professional Edition 或 Team System

必备

Visual Studio 2005 是用于创建 Windows Mobile 应用程序的开发环境。

Windows Mobile 6 Professional SDK 或 Windows Mobile 6 Standard SDK

必备

提供开发 Windows Mobile 6 应用程序所需的工具、头文件、仿真器映像和 Visual Studio 2005 项目类型。

ActiveSync 4.5 或更高版本 (XP) 或 Windows Mobile Device Center (Vista)

必备

提供插接 Windows Mobile 6 仿真器映像或设备所需的连接性。

Visual Studio 2005 Service Pack 1

可选 (Windows XP)

必备 (Windows Vista™)

纳入小的修正并更新 Visual Studio 2005 中所有面向数据的对话框,以显示 SQL Server Compact Edition 产品名称。对于 Windows Vista 用户,为使 Visual Studio 2005 能够在 Windows Vista 上运行,必须安装此服务包更新。

.NET Compact Framework 2.0 Service Pack 1

推荐

如果没有此服务包,则每次部署应用程序时,Visual Studio 2005 都会将 .NET Compact Framework 2.0 部署到 Windows Mobile 6 设备。还添加了对命令行调试的支持,并提供了新的实用程序来审查 .NET Compact Framework 2.0 运行时所提供的性能数据。

SQL Server 2005 Compact Edition Tools for Visual Studio 2005

可选

提供开发使用 SQL Server 2005 Compact Edition 的 Windows Mobile 6 应用程序所需的工具和程序集。安装此工具前,需要先安装 Visual Studio 2005 SP1。

充分利用现有技能

如果您曾经构建过 Windows 桌面计算机应用程序或服务器应用程序,即使您以前从未构建过 Windows Mobile 应用程序,您也已经拥有了着手开发 Windows Mobile 6 应用程序所必备的技能。使得着手构建 Windows Mobile 6 应用程序变得如此容易的一个因素是 Visual Studio 2005。在 Visual Studio 2005 中创建 Windows Mobile 6 应用程序与构建桌面 Windows 窗体应用程序非常类似。在开发 Windows Mobile 6 应用程序时,Visual Studio 2005 的行为和所提供的功能与在开发桌面应用程序时是相同的。

托管应用程序开发

如果您是托管应用程序开发人员,您会发现 .NET Compact Framework 2.0 提供了与创建桌面应用程序时使用的类相同的类,这些类是完整 .NET Framework 类的一个丰富子集。.NET Compact Framework 2.0 还提供了许多与构建桌面应用程序时所使用的 Windows 窗体控件相同的控件。这些控件所提供的体验是您开发桌面应用程序时所熟悉的相同体验。

本机应用程序开发

Windows Mobile 6 平台的核心 API 是 Win32,尽管它是一个子集,但与桌面计算机上的 Win32 是相同的。与此类似,活动模板库 (ATL) 和 Microsoft 基础类 (MFC) 都可用,二者都是其桌面计算机对应项的丰富子集。您还会发现,为桌面应用程序编写的许多 C\C++ 代码与 Windows Mobile 6 兼容。兼容性如此高是因为 Visual Studio 2005 为桌面应用程序和 Windows Mobile 设备应用程序使用了相同的前端 C\C++ 编译器。

数据库应用程序开发

您还会发现,可以将开发面向 SQL Server 2000 和 SQL Server 2005 的数据库应用程序的技能和经验轻松地转换为开发 SQL Server 2005 Compact Edition 应用程序的技能和经验。SQL Server Compact Edition SQL 语法与 SQL Server 2005 完全兼容。类似地,面向 SQL Server Compact Edition 的 ADO.NET 和 OLEDB 编程接口也与对应的面向 SQL Server 2005 的编程接口一致。甚至创建和管理 SQL Server Compact Edition 数据库的方式也让人觉得熟悉,因为创建和管理 SQL Server Compact Edition 数据库时所使用的 SQL Server Management Studio 工具与创建和管理 SQL Server 2005 数据库时所使用的 SQL Server Management Studio 工具是相同的。

指导

Microsoft 提供了许多资源,以为您提供在 Windows Mobile 6 平台上构建优质应用程序所需的指导。除产品文档外,还可以在许多位置找到有关 Windows Mobile 应用程序开发以及在 Windows Mobile 平台上成功开发的最佳实践的信息。

MSDN® 上的 Windows Mobile 页面多半是最好的起步位置。它提供了有关 Windows Mobile 开发的最新信息。MSDN 上的 Windows Mobile 页面还包括指向其他资源(例如白皮书、有帮助的博客和网络广播)的指针。

Microsoft 模式和实施方案小组在移动客户端软件工厂中为 Windows Mobile 开发人员提供了出色的指导。移动客户端软件工厂是一个综合性的面向 Windows Mobile 开发人员的最佳实践、示例、源代码和工具集。所论述的主题包括处理设备外观造型差异、离线数据管理、数据同步和管理大规模应用程序。

Windows Mobile 是 MSDN Channel 9 站点上的一个社区支持的项目。Windows Mobile Wiki 是从其他开发人员的知识和经验中获益的极佳途径。您会发现该 Wiki 致力于解决许多最常见的问题。

Windows Mobile 新闻组是一个社区支持的资源,可在其中提出有关 Windows Mobile 开发的问题,并让业界同行(包括许多 Windows Mobile Microsoft Valued Professionals (MVP))回答这些问题。

Windows Mobile 调整您的应用程序页面提供了与开发能够在全系列 Windows Mobile 设备上工作的应用程序有关的问题的最新信息。您会发现专门针对这些问题的新闻、公告、网络广播的指针和白皮书的指针。

结束语

Windows Mobile 6 提供了开发人员开发和部署功能强大的移动行业应用程序所需的工具和功能。在所有 Windows Mobile 6 设备的 ROM 中加入 .NET Compact Framework 2.0 SP1 和 SQL Server 2005 Compact Edition 提供了一个功能强大的应用程序平台,它也使应用程序部署得到了简化。Device Emulator 2.0 和 Windows Mobile 6 SDK 附带的其他工具通过提供能够在多种 Windows Mobile 设备特征和外观造型上更轻松地测试应用程序的能力,简化了能够在许多不同设备上运行的应用程序的开发过程。Windows Mobile 6 SDK 中包括的 100 多个示例、模式和实施方案移动客户端软件工厂以及移动行业 Solution Accelerator 工具包的组合都是为了提供立即启动行业应用程序开发所需的指导。

无论您是经验丰富的 Windows Mobile 开发人员还是正准备开发第一个 Windows Mobile 项目,您都会发现 Windows Mobile 6 是可用于行业应用程序开发的最佳 Windows Mobile 平台。

另请参阅

其他资源

Windows Mobile Developer Center:安全、部署和管理

Mobile2Market 常见问题

移动客户端软件工厂

移动行业 Solution Accelerator 工具包

Windows Mobile 调整您的应用程序页面

MSDN Windows Mobile 页面

Windows Mobile 开发人员新闻组

基于 Windows Mobile 设备的核心技术资源

基于 Windows Mobile Pocket PC 核心文档

基于 Windows Mobile Smartphone 核心文档

只有注册用户登录后才能发表评论。