| 2009年07月30日 09:00 | |
简介:选择传统代码,快速成功地移植到移动设备
在我的上一篇文章中,我回顾了许多开发用于 MID 类设备,特别是此类采用英特尔® 凌动™ 处理器的设备的出色应用的方法。在本文中,我将更加关注您在决定将现有 x86 应用移植到英特尔® 凌动™ 处理器平台时所需考虑的问题。
纵观针对 MID 类设备的新闻稿、技术评论和厂商定位,可以说无论在技术方面还是从消费者的角度来看,都没有人准确或完整地定义此类设备可能占有的空间。即使如此,在当前低迷的全球经济形势下,对于这些设备的需求仍在令人惊叹地持续增长,这主要是因为其作为移动连接解决方案具有出色的经济性。这便使开发人员陷入了进退两难的境地。尽管 MID 类设备能够带来明显的创新机会,然而很难在不成熟的市场中做出目标平台选择。然而,在决定应将哪些传统代码移植到采用英特尔® 凌动™ 处理器的设备时,您需要提出大量的基本问题。
以下是您在确定哪些传统应用最适合进行移植时所需考虑的一些主要问题:
#1: 在您应用的使用案例场景中,有没有什么事物可能成为标准?
有一句古训:水涨众船高。在技术领域,这股潮流始终是标准。尽管标准流程通常由众多业界公司协力完成,然而只有在一家主要公司主动提出演进远景,并能够通过财务资源和市场份额为其提供支持时,标准的基础才会浮出水面。最后,对于标准,数字、品牌推广和前景展望都具有至关重要的意义。英特尔® 凌动™ 处理器与英特尔® x86 传统代码库涵盖了上述三个因素:
- 实际上,拥有现有台式机或笔记本电脑应用的每个重要用户均可享有 x86 传统代码库。
- x86 目标开发人员社区的技能与知识资产深入、广泛且经久耐用,而英特尔® 凌动™ 处理器在众多厂商和外形中的普遍部署为企业 MID 开发人员创造了深入广泛的市场。
- 在电池使用时间方面,英特尔® 凌动™ 处理器可提供卓越的性能,从而为消费者带来全新的互连和移动生活方式。
#2: 现有 x86 代码库中的哪些业务流程和使用案例能够为迅速开发英特尔® 凌动™ 处理器类设备提供最理想的移植备选方案?
从解决方案设计者的角度来看,采用英特尔® 凌动™ 处理器的移动设备可作为参与互连移动工作方式的架构入口,以及扩展现有业务流程范围的高度灵活的个人工具。
在您目前所知的解决方案背景中,“移动”意味着什么?例如,如果“移动”意味着“互连”,那么您便需要考虑 MID 超越电话的优势所在。然而,如果“移动”意味着超便携访问大型计算设备和复杂的客户机/服务器功能,则您便需要考虑笔记本电脑或上网本的便携性为何不能胜任。您需要确定,哪些工作是 MID 类设备能够执行,而电话所无法执行的。
#3: 评估现有 x86 代码库资产移植潜力的协议是什么?
在低功耗设备的世界中,英特尔® 凌动™ 处理器占据着令人称羡的地位,是全球最大的代码库—— x86 传统代码库无可置疑的“继承者”。这意味着企业和机构 IT 战略顾问有望进一步扩展现有业务流程工具的范围并提高其灵活性,并有充分的理由将英特尔® 凌动™ 处理器及其支持的强大、经济的高度移动设备作为目标。也就是说:
- 在许多情况下,客户机服务器应用的现有客户机组件可无缝移植到以 MID 或上网本为用户界面平台的架构。
- Linux* 与 XP* MID 以及上网本应用自一开始即可享有成熟、强大、完全集成的安全模式,从而成为实现应用移动化的理想选择。
- 现有代码、界面设计与安全模式的广泛再利用,意味着借助采用英特尔® 凌动™ 处理器的设备可以显著缩短开发周期,降低测试成本,并迅速部署移动化应用。
- 移植 x86 传统应用,是实现现有客户机服务器系统用户界面要素移动化的最安全、稳定且经济的途径。
颇具讽刺意味的是,这些实际动机也说明了实现现有解决方案的移动化为何要求领先的 MID 设计师具有敏锐的洞察力和判断力。使用基于英特尔® 凌动™ 处理器的移动设备,如微型笔记本电脑或实际较大的智能电话,会错过此类新设备所蕴含的独特固有的机遇,从而必然会使可用性受到限制。
首先,对现有资产、工作日程、预算和目标进行明确且实事求是的评估。从技术角度来看,为了选择能够在设备上运行良好、按时完成任务并提早带来财务回报的备选方案,您需要能够充满信心地回答以下三个问题:
#4: 您针对移动设备优化应用的用户界面部件的难易程度如何?
- 移动界面必须简单明了,导航层次必须远比台式机上的层次单一。显然,移动设备应用流程是否一目了然,在很大程度上取决于用于进行选择的方向键、浏览键和回车键。对于用户而言,这要比使用鼠标或键盘输入缓慢得多,并且可能更加令人沮丧。
- 需要用户选择的所有项目都应提供一个默认选择。项目选择可确定移动应用流程,而自动选择项目则大大节省了用户的时间,使应用变得更加便利。相比台式机,移动设备的延迟现象更让用户难以容忍,因为移动用户通常必须全神贯注地操作设备。
- 移动应用需要提供上下文敏感(context sensitive)帮助。 如果导航简单明了,用户界面清晰直观,则用户也许能够找到克服重重困难的途径。然而,过于乐观地依靠这些因素是不可取的。最出色的移动应用会提供上下文敏感用户支持。
#5: 移植备选方案能否根据小型设备限制有效工作?
- 屏幕背光照明:在电源管理方面,对移动设备成本最高的操作之一便是使用高对比度的屏幕照明。因此,确定所用移动应用所处的环境是一个重要的考虑事项。外界照明的差异会显著影响移动应用的可用性。如欲了解有关应用级功率优化的更多信息,请点击这里。
- 最大限度减少对文字的依赖:移动设备上的屏幕空间十分有限,出于电源管理和内存管理的原因,使用本地字体是以电池供电的小型设备的公认最佳实践。一方面,这意味着字体针对即定设备进行了优化;然而另一方面,该字体也许无法充分满足您应用的需求,或者不利于您灵活使用,以弥补任何功能缺陷。如欲了解有关屏幕注意事项的更多信息,请点击这里。
- 内存管理:• 以下两个原因说明了内存管理对于移动应用为何十分重要。首先,显而易见,移动设备的可用内存十分有限,这意味着应用应具备出色的“内存管理能力”,能够在其它应用的内存管理能力不佳时进行自我保护。应用必须小心运用分配策略,当不再需要时尽快放弃内存,并在无法满足分配请求时适当发生故障。其次,应用存储在本地内存中的任何内容都会消耗电力。降低内存利用率通常会减少应用的功耗需求,然而没有一种电源管理策略能够自然应用,并始终如一地带来最佳成效。如欲了解有关内存管理的更多信息,请点击这里。
- 用户界面审核: • 必须就能否适应小型屏幕这一点对应用进行评估。往往有必要对用户界面(UI)进行重新设计,以便使应用适应 MID 设备。这是一个关键创新领域:新设计也许能够更充分地利用 MID 平台,而非努力迫使现有应用去“适应”MID 平台。如欲了解有关 UI 注意事项的更多信息, 请点击这里。
在最理想的情况下,如果严格遵守关注点分离原则,则合理设计的 x86 传统代码能够极其迅速地移植到采用英特尔® 凌动™ 处理器的设备。通过将演示层与业务逻辑和服务器端基础设施完全分离,可以显著降低重新编码和测试代码的成本,然而开发人员仍需考虑一个新的实际问题:应用必须能够适当处理未连接状态,无论该状态是由用户还是应用所刻意造成。
#7: 归根结底,关键在于电源管理
应用状态管理:某些在台式机上无可厚非的行为对于以电池供电的设备来说却无法容忍。通常而言,任何使处理器脱离闲置状态的行为都会产生惊人的电费。轮询服务器便是这种不当行为的一个很好的例子:设备必须跟踪计时器,发送一系列询问(通常不会收到有用的答复),并维持持续连接的开销。对于大多数采用英特尔® 凌动™ 处理器的设备而言,连接状态下的电池使用时间约为未连接状态下电池使用时间的一半。此外,处理器“飞速旋转”(Spinning)也会大幅减少电池使用时间。如果需要经常更新,则将处理器设置为从服务器端进行“更换”(push)会节能得多。
节约使用设备资源:除了天线和处理器之外,亮出屏幕也会消耗大量的电池电量。屏幕亮度在此是最明显的注意事项,但还有其它几个操作在经过优化后能够达到更佳效果,包括:
- 优化应用图像: 目前可借助几种开放源代码实用程序来执行此项工作,可对图像加载时间和应用节能性能产生非常积极的影响。Pngcrush 是一种 MSDOS、UNIX* 或 LINUX* 命令行实用程序,可借助各种有损耗的过滤方法来压缩 PNG 文件,或者完全删除不需要的 PNG 大文件。
- 尽量使用经过优化的矢量图形: 尽量使用经过优化的矢量图形:经过简化和优化,以适应小型屏幕要求的位图图形不可能产生令人愉悦的感观效果。此外,尽管您可能的确只下载一次便存储了这些图形,然而它们可能会大大扩充您必须支持的本地存储的容量。另一方面,优化的矢量图形在每次显示时都必须重新刷新屏幕,然而在经过简化之后,它们可为用户显示更加“清晰美观的”图像,并显著减少本地存储开销。
- 展开具有确定性的循环:展开循环可将指定目标代码段中的指令数量减少达一半。大多数优化编译器都有一个开关,您可以对其进行设置,从而以透明的方式达到这一效果。尽管展开循环会产生更多代码,但却可以显著降低处理器占用率。截至目前,英特尔® 编译器一直是英特尔® 凌动™ 处理器最有效的优化编译器,能够透明地提供这一功效。
- 使用整数运算而非浮点运算:在评估需要移植的代码时,对所有数字数据结构进行分析,了解如何能够避免使用浮点数据。整数运算需要的存储容量和产生的处理开销均远远低于浮点运算。
总结:
迅速、成功且经济地在英特尔® 凌动™ 处理器类移动设备上部署应用,主要在于仔细选择需要移植的现有 x86 应用。最理想的备选方案应具备以下的大部分特性:
- 源代码实施关注点分离
- 不过份依赖于细节图示
- 可接受异步数据更新
- 不需要始终保持连接例如,应用可执行弥补策略,例如在离线,和/或批处理上传和下载时对本地数据进行高速缓存。
- 通过简单明了的导航层次,提供令人满意的用户体验
- 针对外界照明、用户交互模式和会话持续时间的可预测的使用案例
本系列文章其它部分的链接:
第一部分 全新类型的互联网终端
第二部分 选择移植的备选目标
第三部分 选择优化的备选目标
第四部分 调试指南
作者简介
Nancy Nicolaisen,移动和嵌入式设备技术领域的文章作者、研究人员和资深软件开发人员。她所撰写的专题文章、专栏和分析报告经常被发表于世界各国的出版物,其中包括《BYTE》、《PC Magazine》、《Windows Sources》、《计算机产品导购》(Computer Shopper)、《Dr. Dobbs Journal of Software Engineering》、《Microsoft Systems Journal》等;她目前共发表了三部专著:《Making Windows Portable:Porting Win32 to Win CE》(John Wiley & Sons 出版公司,2002 年);《The Practical Guide to Debugging 32 Bit Windows Applications》(McGraw Hill 出版社,1996 年);《The Visual Guide to Visual C++》(Ventana Press,1994 年),现被译为 5 种语言。2007 年,她在名为“设计、构建和管理无线网络”(Designing, Building and Managing Wireless Networks)的 Microsoft Professional Education 课程的开发工作中担任技术顾问。Nicolaisen 女士目前的研究重点是开放源代码技术与移动、嵌入式和无线设备发展趋势。

