| 2008年01月31日 21:11 | |
支持移动应用在任何连接状态下,提供几乎相同的用户体验。目前,我们已经能够将笔记本电脑接入遍布全世界的成千上万个无线热点。然而,即使公共网络的分布范围如此广泛,也依然无法覆盖到所有的地方。诚然,无线连接无处不在的时代可能永远不会来到。对许多城市而言,地毯式的网络覆盖也是多年以后的事情。同时,用户还将经常遭遇时断时续的网络连接情况。面对这些情况,依赖静态连接的 Web 及客户端/服务器应用将变得毫无用武之地。这一两难困境催生了新的商机——开发新的应用并改进现有产品以适应移动环境。
无论是否处于持续网络连接状态,移动软件应用都应具备可靠性与连续性。对于大多数应用而言,一旦缺乏网络连接就可能导致工作中断。当我们脱机工作时,我们的脑海中总会浮现一个列表,上面记录着联机时“要完成的任务”。一旦联机,我们就会努力把手头工作和脑中的列表按优先级排序,并记得在脱机时手动收集工作所需的文档。即使工作进展顺利,工作流方案的实施也非常麻烦;倘若进展不顺利,这一烦琐的方案更是严重削弱了我们的工作能力。除影响工作效率外,这种方法还会占用更多的带宽,导致内部网络需求增加,蜂窝连接的成本也会随之提高。
移动应用提供本地客户端界面,可以与本地数据库交互;当网络连接可用时,本地数据库能够自动与企业数据保持同步。尤其值得一提的是,可以通过应用同步或发布-订阅模式来实现脱机功能。比如,利用企业数据库引擎(如 Microsoft SQL Server*)可以建立数据发布信息。
在客户端计算机上可以安装 SQL Server* 个人版,如果您使用的是掌上电脑,就要安装 SQL Server* CE。第一次进行设备同步时,您需要将所有发布数据下载到设备中。但在此后的同步活动中,客户端只会上传改动过的数据,服务器也只会下载全部客户端的合并更新,从而有效降低系统对网络带宽的需求。
这种功能实施起来相对简单一些。在初始同步后,设备会保存应用所需的数据,因此无论网络连接是否可用,应用均能成功运行。根据应用需求的不同,一个应用也许只需偶尔与后端数据库进行重新同步。这样就简化了解决方案——尽管客户端应用中可能存在过期数据,但这些运行风险都是可以提前估计到的。
为了更好地为那些经常需要脱机工作的移动用户服务,这里还额外提供一些扩展 Web 应用的实用技巧:
- 内容缓存:响应 Web 页地址等统一资源标识符(URI)请求的门户会提供一定的内容,而该技术会对这些内容进行脱机缓存。但是,生成内容的代码不被缓存。例如,一个超链接可能会指向 Java* 服务器页面(JSP)或动态服务器页面(ASP)。当用户点击链接时,应用服务器就会运行用于生成页面内容的脚本程序,然后将超文本标记语言(HTML)以数据流方式发送给客户端。这个过程中缓存的是 HTML,而不是 JSP 或 ASP。
- 代码复制:该技术实现了更加动态的门户内容。门户将在提供内容、与用户进行交互、收集处理数据及存储数据的过程中,执行 Java servlet、JSP、ASP 及服务器控件等代码。该技术仅支持从门户向客户端复制代码。
- 数据复制:通过在客户端复制数据,可以实现更类似于交易的交互和专门查询功能。有了数据复制技术,应用就能在门户与客户端之间来回复制数据。任何新创建的或更新过的数据均适用于交换复制。如果数据只能在客户端或服务端中的任一端写入,实施过程将十分简单;否则用户只能单独更新多个数据副本,方案实施起来就会异常困难。
- 模拟:当用户在浏览器中选择了一个 URI 时,无论是在地址栏中输入统一资源定位符(URL),还是直接点击超链接,浏览器都会尝试连接 URL 所指向的服务器,并通过超文本传输协议(HTTP)请求获得资源。如果浏览器无法连接服务器,就会返回错误信息。
通常,本地 Web 浏览器会尝试通过网络连接演示服务器。如果系统脱机,Web 浏览器应重定向至提供缓存内容的本地演示服务器(常驻于客户端)。开发人员可以通过大多数浏览器均支持的自动代理机制来轻松实现该功能;还可为自动代理机制创建一个 JavaScript 函数,以便在通过网络提交请求前就对所请求的 URL 进行动态重写。该函数基于网络状态,可修改 URL 以重定向浏览器至本地运行的演示服务器。
本文内容是“如何实现软件应用移动化”中涵盖的系列内容之一。

