概述
伴随 Web2.0 与 RIA 的快速发展,在客户端处理数据已逐渐成为一种趋势。利用 Dojo Data,Web 开发人员可以在不同的数据格式上建立起一层统一的数据访问模型,使得数据的读写都采用统一的接口,从而降低了客户端逻辑的复杂性,提高了程序的可维护性和可扩展性。在该文章中,我们通过实例具体介绍了 Dojo Data 中 Read API 的技术应用。
Dojo Data Write API 介绍
Dojo 工具包中一些存储库不仅提供了读功能,而且还提供了写功能。也就是说,使用这些存储库,用户不但能够从服务器端获取数据,而且还可以更新服务器端的源数据。这些存储库实现了一套 Dojo Data 所定义的 Write API,用来创建、更改、删除数据。同 Read API 类似,Write API 的设计目标也是屏蔽底层数据存储格式的差异,为用户提供统一的数据访问 API。借助这些 API,用户可以专注于业务层面的逻辑实现,而无需花费太多精力去关注底层数据的存储格式。表 1 列出了 Dojo Data 所定义的 Write API。
表 1.Dojo Data Write API
API | 描述 |
newItem | 创建新的数据项 |
setValue | 更新某个数据项的值 |
deleteItem | 删除某个数据项 |
setValues | 更新一组数据项的值 |
unsetAttribute | 将数据项的某个属性值置空 |
save | 将客户端所做的更新提交到服务器端,完成对源数据的更新 |
revert | 回滚客户端所做的更新,至上一次 save 操作后的状态 |
isDirty | 判断某个数据项是否已在客户端被更新 |
Dojo Data 对数据的更新分为两个阶段。第一个阶段,用户调用 Dojo Data 提供的 Write API 对数据进行更新操作 , 这些操作会被存储库跟踪记录下来。此时这些更新变化还被保存在本地内存中,并没有马上被传送到服务器端。这时如果用户调用 revert 方法,可以放弃这些更新操作,将存储库回滚到上一次调用 save 方法之后的状态;第二个阶段,用户调用 save 方法,利用 Dojo XMLHttpRequest 技术与服务器进行异步通信,将用户所做的操作传递给服务器端,从而最终实现对服务器源数据的更新。这样设计的好处是使得与服务器端的交互可以一次完成大批量的数据更新,也就是批处理操作,并能在客户端支持回滚。Dojo Data 对数据更新的整个过程如图 1 所示。
图 1.Dojo Data 更新操作流程