高效网络应用迁移与学术知识情境化展示
1. 网络应用迁移技术:Disclosure
在网络应用的使用场景中,有时用户希望将在智能手机上运行的应用迁移到更大屏幕的设备上继续使用。Disclosure 就是这样一种基于插桩的新型网络应用迁移技术,它能实现应用的迁移,还具备诸多优势。
1.1 DOM 树处理
Disclosure 将所有 DOM 对象转换为 JavaScript 对象,通过执行插桩代码来创建这些对象。这样,即使进行多次迁移,也能像捕获普通 JavaScript 对象一样捕获 DOM 对象。对于动态创建的 DOM 对象,Disclosure 能知晓其创建的执行上下文。如果这些对象包含在闭包或 Web API 状态中,就可以将它们与作用域对象一起添加到披露表中,以便后续恢复。这与使用 JsonML 库保存 DOM 树的 Imagen 不同,Imagen 未明确说明如何恢复 JavaScript 变量与 DOM 对象之间的链接,以及如何处理动态 DOM 对象。而 ThingsMigrate 和 FlashFreeze 则不支持 DOM 迁移。
1.2 安全性与 WeakMap
在 JavaScript 中,闭包主要用于封装变量,但快照文件可能会暴露闭包变量的值,影响安全性。Disclosure 通过将披露表本身实现为闭包来增强安全性。具体操作如下:
1. 初始化 $disc 库时,声明披露表。
2. 让内部函数 create() 向表中添加新元素(对应原始代码的闭包变量)。
3. 可以通过向 serialize() 函数传递加密密钥来加密披露表,向 restore() 函数传递解密密钥来解密。 </
超级会员免费看
订阅专栏 解锁全文
453

被折叠的 条评论
为什么被折叠?



