当前位置: 首页 > 服务器 > IBM > IBM软件 > IBM Worklight中使用Encrypted Offline Cache功能

IBM Worklight中使用Encrypted Offline Cache功能

2012-11-13 20:33 来源:风信网 作者:末信 人气指数: 我要评论

IBM Worklight 是 IBM Mobile Foundation 的一部分,提供了一个快速构建移动应用程序的强健平台,同时也利用了可跨多个设备平台运行的基于 Web 的技术。本文将继续探讨 第 1 部分 中所中断的开发一个功能齐全的自包含移动应用程序 “Todo” 的过程,这个应用程序使移动用户能够构建并维护一个待办的任务列表。在这个过程中,您将了解到 Encrypted Offline Cache,这是一个 Worklight 客户端运行时的安全措施,可以保护敏感信息免受恶意软件的攻击和设备偷窃。

到现在为止,您应该已经在 Eclipse IDE 内设置好了 IBM Worklight Studio,并且应该对如何在 iOS 和 Android 上部署一个简单的 "Hello World" 类型应用程序比较熟悉。我们将以您在 第 1 部分 开始开发的 Todo 应用程序开始。下载在第 1 部分创建的初始应用程序,并将它导入到 Worklight Studio 环境中。

开发这个应用程序

图 1 阐述了用户运行 Todo 移动应用程序的一般流程。简而言之,用户将会:

  1. 打开这个应用程序。
  2. 输入密码以便安全存储离线数据,然后轻击 Start 进入到第二个面板。
  3. 在第一个字段内输入任何能代表一个新的 “to do” 项的文本,然后通过轻击 Add Item 按钮将其添加到列表内。
  4. 通过轻击列表内的一项将它标记为 “done”,选中该项。轻击 Remove Done 删除所有标记为 done 的项。
  5. 通过在第二个文本字段内键入某个项目的全部或部分名称,过滤面板上所显示的项目,然后再轻击 Filter Items...。

图 1. 样例应用程序面板
图 1. 样例应用程序面板

向应用程序添加该功能的第一步是将代码分为在应用程序内具有特定职责的模块。Todo 将具备三个模块(参见图 2):

  • Constant 模块 获取并设置将要在应用程序中使用的各种常量。
  • List 模块 负责为当前会话存储列表以及处理事件,比如向列表内添加新项、将项目标记为 done,以及删除标记为 done 的项目。
  • Vault 模块 的任务是对列表进行加密和解密。这里需要利用 Worklight 的 Encrypted Offline Cache 特性。

图 2. 模块及其交互
图 2. 模块及其交互

为了构造您的代码,将会使用 JavaScript 领域内常见且流行的 Module Pattern。清单 1 显示了一个模块的框架。您可以为包含在名称空间 (MYAPP) 内的一个对象 (Module1) 分配一个自动执行函数(或立即函数)。一个好的做法是传递全局对象(对于大多数客户端 JavaScript 的窗口)和供应商库(比如 jQuery,以便您可以在模块内使用 $,即便是在模块外,有其他东西也使用了 $,比如 Prototype.js 或另一个库)之类的内容。另一个不错的做法是列出依赖项,并将局部变量分配给这些依赖项,这是因为访问局部变量要比搜索键值对快。

比如:

var eoc = WL.EncryptedCache; eoc.open()

就好过让 JavaScript 搜索 WL 对象,然后再搜索指向另一个对象的 EncryptedCache 键,另一个对象包含您每次需要在其中一个模块内调用该函数的 open 函数。

清单 1. Module Pattern 框架

				
MYAPP.Module1 = (function (global, $) { 
//List dependencies: jQuery 1.7.2

//List private variables

//List private functions
var _init = function () {
console.log("I'm ready!");
}

//List one time initialization procedures 

//public API
return {
init : _init
};

}(window, jQuery)); //MYAPP.Module1

这里有必要提及一些明智的样式约定。在这些代码样例中,大写字符用于表示常量,在私有函数前面添加下划线字符以区别于私有变量。您可以将这些约定扩展为利用 “single var pattern”,其中单变量 (var) 在每个需要变量的函数顶部声明。这么做的原因之一是 JavaScript 在执行代码时会将变量 “提升” 至顶部(清单 2),原因之二是忘记使用 var 有时会产生不想要的结果,比如使用同一个名称覆盖了一个全局变量。

清单 2. 提升的示例

				
//Example of Hoisting 
myname = "global";

function func() {
alert(myname); //returns: "undefined" 
var myname = "local";
alert(myname); //returns: "local"

有一种称为闭包的基础结构能够增强这些模块。在 JavaScript 中,闭包指的是一个函数的局部变量,它在该函数返回后仍然有效。这与 JavaScript 内由函数定义的范围界定紧密相关。比如,清单 1 展示的就是一个正在运行的闭包的示例。其中,init 是一个私有函数,不能在分配给 MYAPP.Module1 的自动执行函数之外进行访问,但是您可以返回一个引用该私有函数的对象;这样一来,您就可以轻松访问它,比如 MYAPP.Module1.init()。而这一切的实现都要归功于闭包。

JavaScript 是一种面向事件的编程语言,类似于几乎在每个编程模式的书籍中都会介绍的 Observer Pattern。在 JavaScript 脚本中,举几个例子,每次当用户进行滚动、单击 HTML 标记或悬停在链接上时,都会触发事件。事件可以被侦听,而且您也可以触发自己的事件。

关注点分离是另一个需要关注的重要实践,它意味着使标记、样式和应用程序逻辑保持分离。您的 HTML 代码应该只描述应用程序的结构;HTML 中内联的 JavaScript 函数并不需要。可以使用事件驱动的编码风格来实现这一点,其中,反而会观察需要具有内联调用的特定元素,以便察看有无触发必要操作的特定事件。这就使得在 JavaScript 中只有一个地方具有应用程序逻辑,而不是在整个 HTML 的多个地方都具有这个逻辑。同样地,应该避免编写 HTML 作为 JavaScript 的一部分,而是应该使用模板。

为您推荐: IBM 功能 Worklight
大家感兴趣的内容
小伙伴最爱的新闻
小伙伴还关注了以下信息
小伙伴关注的焦点

小伙伴都在关注的热门词

芈月传 老司机玩法 萌乐网 黑科技 坐骑揭秘 三国令 铁血皇城 竞技场攻略 书剑恩仇录 披风玩法 装备强化攻略 野外BOSS玩法 全网曝光 赤壁传说 半回合制国 ACT 哥们网 天书世界 奇珍商城 热血战歌 传奇宝藏抽奖 门徒 范伟打天下 打开方式 门徒获取玩法 三大萌宠简介 新手攻略 挂机系统简介 材料副本 大海战 鸵鸟 大黑 激情玩法 门徒战力提升 万世 强化属性 上古降魔 提升战力 装备攻略 九阴绝学 品质推荐 老干妈 激战来袭 大黑游戏 新服亮点 福利多多 画江山 资料片 玩家 九阴真经 江湖儿女 真实场景 现实 虚拟 随机副本 风色轨迹 听天由命 ppwan 神助攻 武林秘药 激活八大脉门 九天劫变 猎命格 天问 大型PVP 花千骨 激战更尽兴 网易mumu 手游玩家 安卓模拟器 安卓 单挑群战 武侠传说 女神 孙尚香专访 胸猛抱团 新游 占山为王 跨服城战 蜀山战纪 剑雨江湖 攻略 实时VR交互 七大女神代言 酷炫走江湖 世界四大杀手 玩家专访 三国经典 大制作 好玩网页游戏 盘点 宇宙霸主 境界玩法 莽荒纪 勇闯难关 镜像副本 荒漠霸主 装备精通 三大战役 鹌小彦奇谈