用資料繫結實現高效率動態網頁

來源:互聯網
上載者:User
動態|資料|網頁


  資料繫結(Data Binding)並不是一個新概念,IE 4.0就已對其給予了豐富的支援。但是,資料繫結並未受到應有的重視,許多開發人員似乎更加願意使用伺服器端指令碼(Server Script)的方法。然而實際上,無論是在動態網頁的代碼實現方面,還是在動態網頁的工作效率方面,資料繫結的效率都比後者更高。

   本文將介紹資料繫結的體繫結構、工作原理及其實現方式,最後對這兩種方法在編程工作量和網頁效率等方面做出比較和結論。

   首先讓我們看一個簡單的例子。某一網頁顯示倉庫的當前庫存情況,使用者可自行選擇資料的排序方式:按貨物的名稱、價格、庫存量等排序。使用伺服器端的技術,例如CGI、ISAPI,或者ASP等中介軟體,使用者若需要N種排序方式,則應用程式指令碼至少要向伺服器提交N次資料請求。對於同樣內容的資料,僅僅因為顯示方式的不同,就要進行多次資料庫操作,耗費大量的網路頻寬。

   另一個常見的例子是,大量資料需要分頁顯示時,每一次翻頁都需要重新向伺服器建立串連,遞交查詢請求,再定位元據。對這些類似問題,資料繫結都提供了高效的解決方案。  

資料繫結的體繫結構和工作原理
   資料繫結體繫結構包括四個組成部分:資料來源對象(Data Source Object)、資料顯示對象(Data Consumers)和兩個代理器(Binding Agent與Table Reptition Agent)。資料來源對象向網頁提供資料,資料顯示對象就是顯示資料的HTML元素,代理器則用來保證前兩者的工作同步。圖1顯示了這四個部分協同工作的原理。

   如圖1所示,資料來源對象負責與後台資料庫伺服器通訊,並將DB Server返回的資料以集合形式緩衝在本地Cache。此後,對此資料集所做的任何操作,如排序、過濾、取子集等,都在本地Cache中進行,由代理器來負責資料來源和顯示該資料的HTML元素之間的通訊和同步。


   圖1

   資料繫結的這種工作方式,使得程式開發人員只要使用擴充HTML和可插入的資料來源對象,就能使指令碼的編程量達到最小。與傳統的伺服器端指令碼產生的網頁相比,資料只要一次下載到用戶端後,對該資料所做的任何操作都不再需要額外的伺服器請求,因此節省了網路頻寬,提高了下載速度。

資料繫結的實現
   本節將根據資料繫結的體繫結構,分別介紹它的各個組成部分及其實現。

   1. 資料來源對象(Data Source Object)

   實現資料繫結的第一步是:確定網頁所要顯示的資料,據此選擇一個適合的資料來源對象(DSO),再在網頁中引用該DSO。資料繫結的靈活性首先表現在支援多種DSO,IE 4.0及以上版本支援下列DSO類型:

   ●Tabular Data Control(TDC):這是一種簡單的DSO,提供對格式化文字檔的訪問。也就是說,TDC提供的資料來源是用指定分隔字元來格式化的文字檔。

   ●Remote Data Service(RDS):RDS的前身是ADC(Access Data Control)。RDS通過OLE-DB或ODBC與資料庫通訊,獲得資料。

   ●JDBC DataSource Applet:它與RDS的不同之處在於資料庫連接使用JDBC。

   ●XML Data Source:擴充標記語言XML使用標準的方式來描述和交換結構化資料;XML的資料以開放的、基於文本的格式進行描述,並通過標準HTTP協議傳輸。XML本身的特性決定了它天生就是一種靈活強大的DSO。IE4.0使用JAVA APPLET來實現XML DSO;IE5.0支援Data Island,使用者可以直接用<XML>標記定義的資料作為DSO。

   ●MSHTML Data Source:除了使用外部的控制項作為DSO外,開發人員還可以在HTML文檔中定義資料集,並使用MSHTML本身作為資料來源。

   ●自訂類型DSO:除了以上明確定義的這五類DSO,IE還支援使用者自訂類型的DSO,只要該DSO遵循IE 4/MSHTML Data Binding Interface即可。

   DSO可以在設計時指定,也可以在運行時動態增加、修改和刪除。

   2.支援資料繫結的資料顯示對象(Data Consumer)

   可綁定的HTML元素共分為兩大類:單值對象(Single-valued Consumer)和表對象(Tabular Consumer)。單值對象顯示DSO提供的目前記錄的某一個域,而表對象中的每行元素則分別對應一條記錄中不同的域,並以此為模板重複顯示資料集中的每條記錄。資料顯示對象既可以在設計時綁定到DSO,也可以在運行時動態綁定。

   DSO和Data Consumer的動態特性,使得已經存在的元素繫結可以被修改;不但如此,DHTML物件模型(DHTML Object Modle)還支援運行時動態增加資料繫結元素和資料來源對象,因此資料可以以非同步方式下載到用戶端。該特性使得開發人員可以減少網頁內容的初始化下載時間,並可在一個頁面上顯示多個不同資料集的內容,互動式使用者將由此獲得高品質的服務。

   支援資料繫結的HTML元素包括:A、Applet、Button、Div、Frame、Iframe、Img、Input(包括Checkbox、Hidden、Label、Password、Radio、Text等類型)、Label、Marquee、Select、Span和Textarea。其中,A、Button、Div、Img、Frame、Iframe、Lable、Marquee以及span支援唯讀功能的資料繫結;而Input(除Button類型外)、Select、Textarea、Object和Applet元素支援被綁定資料的Update功能。

   3. 資料繫結支援的操作

   對於唯讀類型的Data Consumer來說,資料繫結支援的操作就是顯示DSO提供的資料集。具體功能包括:

   ● 動態增加和修改被繫結元素及DSO,如改變所顯示的資料欄位、對資料集進行過濾和排序等。

   ● 動態改變資料集的顯示方式,資料可以用HTML格式顯示,也可用簡單的Text格式顯示。

   ● 動態控制被顯示資料的數量,即可動態改變分頁顯示時每頁包含的記錄數。

   支援Update功能的Data Consumer不但支援上述功能,還支援記錄的增加、修改和刪除。也就是說,使用者在互動頁面上對資料的增加、修改和刪除,將影響到顯示該資料的元素所綁定到的資料集。為了方便對資料集的控制,資料繫結允許開發人員使用ADO(Active Data Objects)提供的所有方法和屬性來維護DSO提供的資料集,包括Insert、Update、Delete及Navigation等操作。

   資料繫結中一個非常重要的問題是,一定要清楚對Data Consumer所做的操作到底影響了哪些資料:是只對本地Cache中的資料起作用,還是已真正改變了後端資料庫(這與DSO的類型有關)。TDC、XML Data Source以及MSHTML Data Source都只支援對Cache中的資料進行改變,而不支援將改變後的Cache中的資料提交到資料來源所串連的後端資料庫。而RDS和JDBC DataSource Applet都支援修改後端資料庫的功能。

比較及結論
   從表1可以看出,相對於伺服器端指令碼,資料繫結所產生的網頁工作效率明顯提高。但是使用該方法對程式員的要求較高,需要對Data Binding的深刻理解才能充分發揮將它的優良特性。複雜的工作就是高效率所必須付出的代價,在應用中,開發人員應根據具體的需求和實際情況,選擇適宜的方法或是將兩者結合使用,以便獲得最高的效能價格比。

表1

比較項目

資料繫結

伺服器端指令碼

網頁工作效率

資料下載

同步/非同步

同步

對資料進行過濾或排序

只需建立一次串連

n次操作需建立n次串連

分頁顯示

只需建立一次串連

每次翻頁需要新串連和定位元據

通過data consumer直接修改資料庫

支援,且不需編程

支援,但需編程

結論

下載速度明顯提高,與使用者互動快,提供高品質的服務

下載速度與互動速度不如資料繫結方式

編程工作效率

編程靈活性

編程工作量

編程複雜性

結論

編程工作量少,使用靈活.但要求程式員必須熟悉dso和data consumer所支援的特殊方法和屬性,編程比伺服器端指令碼複雜

雖然編程工作量大,但使用靈活簡便,只需熟悉一般資料庫操作的程式員即可勝任




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。