|
無論在傳統(tǒng)的桌面應用還是在主流的互聯(lián)網(wǎng)應用中,數(shù)據(jù)始終占據(jù)著軟件應用中的核心地位。當下,web2.0已經(jīng)是一個讓人們耳熟能詳?shù)脑~匯,而由此帶來的數(shù)據(jù)的開放與共享,引領(lǐng)我們走入了海量數(shù)據(jù)時代。在今天的互聯(lián)網(wǎng)上,數(shù)據(jù)的交互幾乎成為了我們的終極訴求,可隨之而來的數(shù)據(jù)多樣性,信息的分布式存儲及松耦合,以及數(shù)據(jù)量的幾何級規(guī)模的膨脹也帶來了數(shù)據(jù)組織上的難度的增大,與此同時,伴隨著Ajax, RIA及面向服務的網(wǎng)絡應用的發(fā)展,其所要求的客戶端數(shù)據(jù)處理邏輯的復雜性不斷增加,使得開發(fā)難度不斷加大。
出于簡化數(shù)據(jù)處理邏輯,增加應用的可維護及可擴展性的需求,目前流行的JavaScript框架也基本都會具有各自的數(shù)據(jù)處理模塊或接口。本文的目的就是為了介紹Dojo的數(shù)據(jù)處理模塊:Dojo.data。作為Dojo的數(shù)據(jù)處理中間層,其主要的職責就是解析及管理由數(shù)據(jù)源傳入的各種類型的數(shù)據(jù),通過統(tǒng)一的數(shù)據(jù)訪問與處理接口與數(shù)據(jù)展現(xiàn)層(Dojo Widget)進行通訊,便于各個Widget的管理與程序的移植。
Dojo Data中的數(shù)據(jù)管理
在面向服務應用大行其道的今天,協(xié)調(diào)數(shù)據(jù)的多樣性是開發(fā)互聯(lián)網(wǎng)應用中不可避免的首要問題。我們常見的數(shù)據(jù)格式包括Json, XML, Csv等,作為數(shù)據(jù)處理的中間層,能夠讓用戶以統(tǒng)一的接口連接不同的數(shù)據(jù)源是一個基本需求。在Dojo.data模塊中,預定義了不同的DataStore用于訪問管理不同數(shù)據(jù)格式的數(shù)據(jù)源,而所有的DataStore都會實現(xiàn)相同的數(shù)據(jù)訪問接口,這樣就可以成功實現(xiàn)數(shù)據(jù)提供層與數(shù)據(jù)展現(xiàn)層之間的松耦合。表1中列出了Dojo中部分已實現(xiàn)的各種不同的DataStore。
表1. Dojo中部分已實現(xiàn)的DataStore
DataStore | 描述 |
dojo.data.ItemFileReadStore | 用于JSON數(shù)據(jù)的只讀的DataStore |
dojo.data.ItemFileWriteStore | 用于JSON數(shù)據(jù)的可讀寫的DataStore |
dojox.data.CsvStore | 用于CVS數(shù)據(jù)的只讀的DataStore |
dojox.data.OpmlStore | 用于OPML(Outline Processor Markup Language)數(shù)據(jù)的只讀的DataStore |
dojox.data.HtmlTableStore | 用于HTML table數(shù)據(jù)的只讀的DataStore |
dojox.data.XmlStore | 用于XML數(shù)據(jù)的可讀寫的DataStore |
dojox.data.FlickrStore | 用于讀取flickr.com提供的數(shù)據(jù)的只讀的DataStore。是一個很好的web service相關(guān)的DataStore的示例 |
dojox.data.QueryReadStore | 用于讀取由服務器端提供的JSON數(shù)據(jù)的只讀的DataStore |
盡管讀取的數(shù)據(jù)源多種多樣,但在DataStore中,通過統(tǒng)一數(shù)據(jù)訪問接口,對數(shù)據(jù)的組織管理是一致的。每條數(shù)據(jù)項都被作為一個item對象,其中包含了一定的鍵(attribute)值(value)對用以對應數(shù)據(jù)條目中的各個屬性值。下面以一段簡單的JSON數(shù)據(jù)片段為例,來介紹這種對應關(guān)系:
{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技術(shù):Dojo Data Store——統(tǒng)一數(shù)據(jù)訪問接口,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。