|
無論在傳統的桌面應用還是在主流的互聯網應用中,數據始終占據著軟件應用中的核心地位。當下,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——統一數據訪問接口,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。