国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

ASP 3.0高級編程(四十四)_ASP教程

2024-05-04 11:03:54
字體:
供稿:網(wǎng)友

推薦:ASP:判斷訪問是否來自搜索引擎的函數(shù)
判斷訪問是否來自搜索引擎的函數(shù),有興趣的可以試試! 以下為引用的內(nèi)容:<%'檢查當(dāng)前用戶是否是蜘蛛人Function check(user_agent) allow_age

第10章 ASP與客戶端數(shù)據(jù)

在一本ASP專著中討論客戶端數(shù)據(jù),這與服務(wù)器端的ASP編程是否矛盾?情況并非如此,因?yàn)槲覀冎两裆形磁龅街粡氖路?wù)器端編程的ASP程序員。雖然ASP是一項(xiàng)服務(wù)器端技術(shù),但可以想象,編程人員不可能僅僅使用ASP進(jìn)行編程。從事ASP編程的Web開發(fā)人員,仍然需要與客戶端數(shù)據(jù)進(jìn)行交互。
因此,圍繞著ASP構(gòu)建一個應(yīng)用程序時必須考慮整個應(yīng)用程序的情況,這也意味著必須考慮客戶端。為了獲得一個運(yùn)行良好、快速響應(yīng)的應(yīng)用程序,需要很好地使用客戶端數(shù)據(jù)。
本章將討論如何在客戶端使用數(shù)據(jù)。特別將著重研究:
· 遠(yuǎn)程數(shù)據(jù)服務(wù)(Remote Data Services,RDS),如何向客戶端傳送數(shù)據(jù)以及客戶端接收數(shù)據(jù)。
· 如何將ADO記錄集綁定到HTML控件。
· 如何利用用戶自定義組件提供數(shù)據(jù)。
· 如何更新客戶端數(shù)據(jù),并將其反饋到服務(wù)器。
· 如何從數(shù)據(jù)庫中獲取圖像并將其顯示在Web頁面中。
· 如何創(chuàng)建基于表格的Web頁面。
以上覆蓋的范圍相當(dāng)廣泛,同時有很多不同的方法可以取得相同的結(jié)果,但實(shí)際上實(shí)現(xiàn)起來并不是特別困難。

10.1 斷開連接的記錄集
首先需要掌握的是“斷開連接的數(shù)據(jù)”的概念。迄今為止,在研究ADO的過程中,已經(jīng)學(xué)習(xí)了獲取記錄集的方法,以及如何修改這些記錄集中的數(shù)據(jù)。回顧一下,我們打開一個記錄集,對數(shù)據(jù)做一些修改,然后再關(guān)閉這個記錄集,在操作記錄集的過程中,始終與服務(wù)器保持著連接。這是相當(dāng)明顯的,但別忘了Web在本質(zhì)上是無狀態(tài)的。如果想使用客戶端數(shù)據(jù),如何始終保持與服務(wù)器的連接?很簡單,這是不可能實(shí)現(xiàn)的,這也是定義斷開連接的記錄集概念的緣由。
一個斷開連接的記錄集只是一個普通的記錄集,但解除了與服務(wù)器的連接,成為孤立的對象,可以像普通的記錄集那樣對其執(zhí)行更新、增加和刪除操作。但這些變化只發(fā)生在記錄集內(nèi)部,并不反饋到服務(wù)器,因?yàn)橛涗浖c服務(wù)器已不再保持著連接。這并不是缺點(diǎn),因?yàn)榭梢耘c服務(wù)器重新建立連接,同時服務(wù)器可以對任何修改進(jìn)行更新。即使服務(wù)器端的數(shù)據(jù)已經(jīng)改變了,ADO仍然有方法讓用戶及時發(fā)現(xiàn)這些變化,這樣用戶就能決定哪些數(shù)據(jù)是正確的。這稱為沖突處理(conflict resolution)。
斷開連接的記錄集使我們能在組件之間,包括服務(wù)器與客戶之間,傳送具有全部功能的記錄集。本章后面將探討如何在組件內(nèi)創(chuàng)建斷開連接的記錄集。但這里不準(zhǔn)備對此做過于詳細(xì)的研究,因?yàn)楸緯?3章至第18章已經(jīng)覆蓋這部分內(nèi)容,這里僅做簡單的介紹,以便于了解組件是如何與遠(yuǎn)程數(shù)據(jù)服務(wù)交互的。

10.2 遠(yuǎn)程數(shù)據(jù)服務(wù)
遠(yuǎn)程數(shù)據(jù)服務(wù)(Remote Data Services,RDS)是允許我們處理客戶端數(shù)據(jù)的一系列服務(wù)的統(tǒng)稱。現(xiàn)在不用擔(dān)心這方面的問題,因?yàn)镽DS本身就是ADO的一部分,只有在需要傳送和使用客戶端數(shù)據(jù)時,才會使用。實(shí)際上RDS是由幾個組件構(gòu)成的。圖10-1說明了這些組件以及它們之間是如何協(xié)同工作的。
圖10-1 RDS的組件構(gòu)成
組件似乎很多,但并不是所有的組件在每種情形下都被使用,實(shí)際上有一些不是RDS的一部分。然而這里還是把所有可能出現(xiàn)的組件都放在了圖上,以備需要時查看。圖10-1分成了兩部分,因?yàn)槭褂每蛻舳藬?shù)據(jù)需要一些向客戶端傳送數(shù)據(jù)的方法,同時數(shù)據(jù)一旦到達(dá)客戶端,也需要一些管理數(shù)據(jù)的方法。我們先從服務(wù)器端開始。

10.2.1 RDS服務(wù)器組件
雖然RDS用于傳送和訪問客戶端數(shù)據(jù),但其確實(shí)有一些基于服務(wù)器的組件。這是必需的,因?yàn)榭隙ㄐ枰撤N方式將數(shù)據(jù)傳送到客戶端。因此有了一系列能訪問數(shù)據(jù)并允許發(fā)送數(shù)據(jù)到客戶端的服務(wù)器組件。我們把實(shí)際的數(shù)據(jù)傳送稱為調(diào)度(marshal)。
服務(wù)器端組件圖的最上端是數(shù)據(jù)存儲,由OLE DB提供者訪問。它并不是RDS的一部分,但這表示只要有相應(yīng)的OLE DB提供者,就可以通過RDS在客戶端使用任何數(shù)據(jù)。至于如何處理服務(wù)器上的數(shù)據(jù),可以有兩種選擇:
· 數(shù)據(jù)工廠(DataFactory)是缺省的用于訪問數(shù)據(jù)存儲的服務(wù)器端組件。它作為服務(wù)器端RDS組件的一部分安裝在計算機(jī)上,除了能從數(shù)據(jù)存儲中獲取數(shù)據(jù)外,還為服務(wù)器處理發(fā)送到客戶端以及從客戶端發(fā)送來的數(shù)據(jù)。
· 自定義組件只是一個普通的提供了數(shù)據(jù)傳送方法的COM組件。當(dāng)數(shù)據(jù)工廠不能提供所需的功能時,可以使用自定義組件。本章將介紹一個簡單的組件例子,在本書的后面還有一個更復(fù)雜的例子。
Web服務(wù)器使用這兩種組件作為客戶和服務(wù)器數(shù)據(jù)的接口。

10.2.2 RDS客戶組件
在客戶端先從底端的DataSpace對象開始,該對象作為客戶端的一部分與數(shù)據(jù)工廠或自定義對象協(xié)同工作。DataSpace對象是一個代理對象,負(fù)責(zé)與服務(wù)器進(jìn)行通信,同時也是數(shù)據(jù)傳輸?shù)耐ǖ溃ɑ蛘咄ǔKf的調(diào)度)。DataSpace對象是用客戶端腳本語言或用HTML語言中的<OBJECT>標(biāo)記創(chuàng)建的COM對象。在本章后面會看到關(guān)于這方面的例子。
DataSpace對象上面是數(shù)據(jù)源對象(Data Source Object,DSO),負(fù)責(zé)存儲客戶端數(shù)據(jù)。一個數(shù)據(jù)源對象包含一個ADO數(shù)據(jù)記錄集,與客戶數(shù)據(jù)緩存共同管理數(shù)據(jù)。客戶數(shù)據(jù)緩存只是一種管理客戶端數(shù)據(jù)的客戶光標(biāo)服務(wù)。同時數(shù)據(jù)源對象又是一個COM對象,與DataSpace對象類似,也可以通過客戶端腳本或使用HTML語言中的<OBJECT>標(biāo)記來創(chuàng)建。同樣,在本章稍后也會介紹關(guān)于這方面的一些例子。
數(shù)據(jù)源對象的上面是數(shù)據(jù)綁定管理器,任務(wù)是建立HTML控件與數(shù)據(jù)源對象的連接。這就是我們所知道的綁定,可以通過設(shè)置某些HTML控件的DATASRC和DATAFLD屬性來實(shí)現(xiàn)。下面將對這些內(nèi)容進(jìn)行討論,并示范如何在瀏覽器中方便地使用數(shù)據(jù)。

10.2.3 支持RDS的瀏覽器
要知道RDS是微軟的技術(shù),因此只能在微軟的瀏覽器上工作。實(shí)際上,只有在IE 4.0或更高版本的瀏覽器中才完全支持RDS。
當(dāng)編寫依賴于RDS的應(yīng)用程序時,需要注意訪問應(yīng)用程序的客戶的RDS版本可能與服務(wù)器端有所不同。舉例來說,IE 4中的是RDS 1.5版本,而IE 5、Office 2000和Visual Studio 6中的則是RDS 2.0版本。有兩種方法可以處理這種兼容性問題:
· 確保所有用戶已經(jīng)升級到RDS的最新版本。如果客戶運(yùn)行的是Windows 2000,那么已經(jīng)在運(yùn)行最新版本的RDS了。否則,可以從網(wǎng)址www.microsoft.com/data處下載。RDS 2.5版本是目前最新的隨同Windows 2000一起發(fā)布的版本,同時也是一個可單獨(dú)下載的軟件包。
· 當(dāng)連接到數(shù)據(jù)源時,指定數(shù)據(jù)工廠的模式。這可以指定使用的是哪一個版本的RDS組件,后面將介紹這方面的一個例子。

10.2.4 數(shù)據(jù)源對象
數(shù)據(jù)源對象是一個存儲和管理客戶端數(shù)據(jù)的客戶端對象。因?yàn)檫@是使用RDS最簡單的一種方式,首先研究一下這些對象。
這里有幾個不同的數(shù)據(jù)源對象,每一個都針對不同類型的數(shù)據(jù):
· 表格數(shù)據(jù)控件(Tabular Data Control,TDC),用于處理表格形式或分隔形式的文本文件。
· RDS數(shù)據(jù)控件,用于連接OLE DB數(shù)據(jù)存儲,能夠指定連接到哪個數(shù)據(jù)存儲,以及返回哪些數(shù)據(jù)。
· Java數(shù)據(jù)庫連接器,這是一個通過Java數(shù)據(jù)庫控件(Java DataBase Control,JDBC)連接到數(shù)據(jù)存儲的Java小程序。這里我們不想討論JDBC,因?yàn)樗⒉惶峁┢渌丶o法實(shí)現(xiàn)的功能。
· 微軟的HTML(MSHTML)數(shù)據(jù)源對象用HTML標(biāo)記數(shù)據(jù),并把它作為數(shù)據(jù)源。
· XML數(shù)據(jù)源對象使用XML數(shù)據(jù),用于結(jié)構(gòu)化的或任意結(jié)構(gòu)的XML。
選用哪一種數(shù)據(jù)源對象取決于你想做什么,以及數(shù)據(jù)從哪里來。如果需要向客戶提供少量的數(shù)據(jù),并且不允許用戶修改數(shù)據(jù),那么表格數(shù)據(jù)控件(TDC)可能會比較適合。這種數(shù)據(jù)源是一個文本文件,不需要任何數(shù)據(jù)庫,因此編輯起來比較簡單。對于從數(shù)據(jù)庫中取出數(shù)據(jù)并且可能需要更新的情況,RDS數(shù)據(jù)控件是最合適的。而對于許多新數(shù)據(jù)源,會發(fā)現(xiàn)此時需要使用XML數(shù)據(jù)控件。這實(shí)際依賴于所使用的Web應(yīng)用程序的類型,以及用戶所需的功能。
我們將依次介紹這些數(shù)據(jù)控件,一旦了解了如何用它們把數(shù)據(jù)傳送到客戶端,將會介紹如何使用這些數(shù)據(jù)。

分享:ASP 3.0高級編程(三十五)
7.5.1 常規(guī)調(diào)試技術(shù)在第2章中,已經(jīng)看到如何使用Response.Write方法以及Request集合來顯示集合的內(nèi)容。如果代碼要使用來自請求的值,首先要做的是保證所需的值存在。很容易出現(xiàn)的問題是錯拼或

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 庆安县| 汤原县| 孟州市| 旺苍县| 宁城县| 普兰县| 博罗县| 麻阳| 巨野县| 纳雍县| 长顺县| 通辽市| 辽阳县| 巴中市| 洛隆县| 蒙城县| 巴彦淖尔市| 延川县| 社会| 大新县| 双流县| 利川市| 溧水县| 长治市| 浦北县| 扎鲁特旗| 莫力| 共和县| 灵山县| 镇康县| 方正县| 昌乐县| 安多县| 江华| 南川市| 稻城县| 肇州县| 四会市| 当涂县| 峨山| 武清区|