Dojo Data Store——统一数据访问接口

  无论在传统的桌面应用还是在主流的互联网应用中,数据始终占据着软件应用中的核心地位。当下,web2.0已经是一个让人们耳熟能详的词汇,而由此带来的数据的开放与共享,引领我们走入了海量数据时代。在今天的互联网上,数据的交互几乎成为了我们的终极诉求,可随之而来的数据多样性,信息的分布式存储及松耦合,以及数据量的几何级规模的膨胀也带来了数据组织上的难度的增大,与此同时,伴随着Ajax, RIA及面向服务的网络应用的发展,其所要求的客户端数据处理逻辑的复杂性不断增加,使得开发难度不断加大。

  出于简化数据处理逻辑,增加应用的可维护及可扩展性的需求,目前流行的JavaScript框架也基本都会具有各自的数据处理模块或接口。本文的目的就是为了介绍Dojo的数据处理模块:Dojo.data。作为Dojo的数据处理中间层,其主要的职责就是解析及管理由数据源传入的各种类型的数据,通过统一的数据访问与处理接口与数据展现层(Dojo Widget)进行通讯,便于各个Widget的管理与程序的移植。

  Dojo Data中的数据管理

  在面向服务应用大行其道的今天,协调数据的多样性是开发互联网应用中不可避免的首要问题。我们常见的数据格式包括Json, XML, Csv等,作为数据处理的中间层,能够让用户以统一的接口连接不同的数据源是一个基本需求。在Dojo.data模块中,预定义了不同的DataStore用于访问管理不同数据格式的数据源,而所有的DataStore都会实现相同的数据访问接口,这样就可以成功实现数据提供层与数据展现层之间的松耦合。表1中列出了Dojo中部分已实现的各种不同的DataStore。

  表1. Dojo中部分已实现的DataStore

DataStore描述
dojo.data.ItemFileReadStore用于JSON数据的只读的DataStore
dojo.data.ItemFileWriteStore用于JSON数据的可读写的DataStore
dojox.data.CsvStore用于CVS数据的只读的DataStore
dojox.data.OpmlStore用于OPML(Outline Processor Markup Language)数据的只读的DataStore
dojox.data.HtmlTableStore用于HTML table数据的只读的DataStore
dojox.data.XmlStore用于XML数据的可读写的DataStore
dojox.data.FlickrStore用于读取flickr.com提供的数据的只读的DataStore。是一个很好的web service相关的DataStore的示例
dojox.data.QueryReadStore用于读取由服务器端提供的JSON数据的只读的DataStore

  尽管读取的数据源多种多样,但在DataStore中,通过统一数据访问接口,对数据的组织管理是一致的。每条数据项都被作为一个item对象,其中包含了一定的键(attribute)值(value)对用以对应数据条目中的各个属性值。下面以一段简单的JSON数据片段为例,来介绍这种对应关系:

{
identifier:
'id',
label:
'name',
items: [
{
"id": "AF", "name":"Africa", "type":"continent",
"population":"900 million", "area": "30,221,532 sq km" },
{
"id": "AS", "name":"Asia", "type":"continent",
"population":"1 billion", "area": "25,428,192 sq km" }
]
}

NET技术Dojo Data Store——统一数据访问接口,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。