ADO+ 引導資料種類的演變 (轉自 ms 一)

來源:互聯網
上載者:User
ado|資料 ADO+ 引導資料種類的演變
Dino Esposito
2000年9月

摘要: 本文討論了 ADO 的最新版本 ADO+ 所提供的增強互通性和延展性。

目錄

簡介
一種公用資料操縱語言
資料種類
ADO+ 增加了哪些內容
ADO+ 的構成要素
ADO+ 命令
強型別編程
摘要


--------------------------------------------------------------------------------


簡介

從一開始,開發軟體應用程式就是為了訪問某種資料庫。分布式應用程式和基於 Web 的應用程式也不例外。然而在分布式方案中,由於可能存在不同的硬體和軟體平台或物件模型,事情變得稍微有點複雜。儘管如此,資料就是資料,在幾乎任何地方都需要得到交換和處理。

在我們進入可程式化 Web 時代 — Internet 的第三個階段 — 之前,資料訪問曾是一個相對簡單的問題;主要關心的問題就是選擇效能成本最合算的資料庫伺服器。任何系統的所有模組都必須符合資料庫伺服器 — 一種對整個系統進行完全控制的全能實體 — 的要求。客戶機/伺服器應用程式一直是這種模型的典型表現形式。

近來,n 層 Microsoft® Windows® DNA 系統致力於開發能夠對幾乎任何種類的資料進行迅捷可靠的訪問的技術,這些資料種類包括:關係型、非關係型、層次型、半結構化型、分散型、易失型等。這種資料訪問的統一方法成為“通用資料訪問”策略 — OLE DB 體繫結構的鼓舞人心的原則。Microsoft ActiveX® Data Objects (ADO) 的出現完成了一項重大的任務:將成千上萬的 Windows 開發人員從過時的客戶機/伺服器模型帶到資料訪問組件和 OLE DB 的奇妙世界。

在 Windows DNA 模型中,中介層組件通過 OLE DB 規範體貼地為我們定義的一種公用格式來擷取和交換資料。這種格式以行集格式為基礎,並且通常被轉換為諸如 ADO 記錄集之類的一種更進階的結構。

使用 ADO 記錄集有得有失。一方面,它們提供了一種豐富並具有吸引力的編程介面。另一方面,它們是嚴格基於 COM 的,在涉及許多平台(尤其是非 Windows 平台)的分布式異構環境中無法使用。互通性和延展性是對現代 Web 系統的兩個很高的要求;互通性和延展性更好的資料訪問體繫結構同樣是最新的 ADO 版本 ADO+ 中的主要變化。


--------------------------------------------------------------------------------


一種公用資料操縱語言

通常情況下,目前的分布式系統符合圖 1 中所示的體繫結構。


圖 1. 目前的分布式 Web 系統的典型體繫結構

展示層通常基於 HTML 3.2 輸出,並能夠很好地與任何較新的瀏覽器一起工作。網頁是在 Web 服務器上使用 Active Server Pages (ASP) 構建的,並且只有在一些相當特殊的情況下才試圖通過 COM、動態超文字標記語言 和 XML 支援來提供瀏覽器的實際功能。

關鍵之處是中介層,其中通常有一層或多層業務對象擷取並交換資料來響應使用者的輸入。這些組件可能需要彼此傳遞資料,並且在傳遞資料的過程中,它們需要一種便於使用、功能強大並為所有組件所理解的公用資料格式。ADO 記錄集 — 表或視圖的 ADO 表示 — 是一個相當不錯的解決方案,它有幾個優點,並且只有一個大的缺點。

ADO 記錄集的靈活性足以使您能夠毫不費力地定位記錄以及使用過濾器和書籤。它們還提供排序、自動分頁和持久性等功能,並能在與資料來源斷開時工作。可以在多層之間相當高效地彙集記錄集,這歸功於其固有的並且極為緊湊的二進位格式 — Advanced Data Table Gram (ADTG) 格式。

斷開的記錄集在組件之間的傳輸涉及到 COM 彙集,並強制接收組件配合這一彙集。換句話說,只有 COM 物件才能使用 ADO 記錄集。這在 COM/DCOM 在業務層中佔主導地位的同構體繫結構中不成問題。顯然,當有關的伺服器端組件的映射涉及到諸如大型主機或 Unix 平台之類的異構節點時,就會帶來很大的不便。

所謂的 Internet 的第三個階段使這一方案離我們更近了。它預示了一個世界,在這個世界中,功能實現通過各種 Web 服務(即可以通過 HTTP 訪問的環繞著我們的衛星系統)成為可能。您將需要向這些服務中的某個傳遞一些記錄以進行進一步處理,這個方案並不是什麼勉強的事情。沒有什麼比 Web 服務更加容易的事了 — 不管它的內部體繫結構或公用編程介面如何 — 它不接受 ADO 記錄集。

A目前現實中的 ADO,特別是記錄集,是在 Windows 和基於 COM 的方案中操縱資料的強有力的工具。不幸的是,隨著您的系統逐漸向完全的 Internet 互通性方向演變,它們逐漸喪失了其吸引力。


--------------------------------------------------------------------------------


資料種類

在完美的情況下,應該能夠在任何平台或裝置上以相同的方式訪問資料,並具有相同的靈活性。這樣,每個平台或裝置都可以根據需要自由地操縱資料。如果您通過 ADO 記錄集展示資料,則您也使自己和您的應用程式陷於有限互通性的實際風險之中。

目前,如果您通過 ADO 對資料進行訪問,並希望將其傳送到遠程組件,您要麼使用從資料訪問模組獲得的相同的 ADO 記錄集,要麼將其轉換為能夠通過網路傳送的另外的東西,更為重要的是,能夠在其最終目的地被理解。如前所述,記錄集需要 COM 彙集,舉例來說,COM 調用並不是總能穿過公司防火牆。此外,在對 ADO 記錄集進行彙集時,總處理時間的很大部分是用於完成必要的類型轉換。事實上,您必須確保記錄中的所有的值對應到 COM 能夠識別並知道如何進行處理的有效資料類型。

在有關的組件在物理上是分開的並在不同的機器上運行時,COM 彙集因素變得更為重要。因此,在向完全由 網際網路連線起來的世界前進的過程中,目前的 Windows 資料種類連同 ADO 記錄集必須有所發展才能繼續存在下去。

需要樣本嗎?在 MIND 的 2000 年 1 月號(英文)以及 MSDN Magazine 的 2000 年 3 月號(英文)中的 Cutting Edge 專欄中,我對將遠程指令碼 (RS) 用作一種從遠程 ASP 頁面擷取資料而不定位到該頁面的跨瀏覽器的技術進行了說明。當您以這種方式調用某一頁面上的遠程函數時,RS 基礎結構提供將函數返回的內容發送回客戶機。在大多數情況下,您需要返回一個記錄集。然而,由於安全性原因,RS 甚至不會嘗試連同任何其它 COM 物件對某一 ADO 記錄集進行處理。因而,如果使用 RS,您必須避免使用 ADO 記錄集,而應當使用數組或字串傳遞所請求的資訊。在 2000 年 3 月的專欄中,我通過從屬記錄集構建一個 JavaScript 對象對這一內在的限制進行了說明。ASP 頁面通過 ADO 擷取資料,並在返回調用程式前將其轉換為一個 JavaScript 對象:

rst = new ActiveXObject("ADODB.Recordset");
rst.open("select * from employees", "DSN=Northwind");
oRS = new Recordset(rst);
rst.close();
return oRS;

客戶機頁面通過 RS 運行時接收這一對象,並可以根據需要對其進行處理,這比通過字串或數組要容易得多。詳細資料和原始碼,請參見我的 2000 年 3 月 Cutting Edge 專欄文章(英文)。

我們從這裡可以學到些什麼嗎?對於超出單一客戶機或伺服器端平台的資料互通性,我們需要對 ADO 模型進行一個較小的改變。

我們需要改變是由於跨平台模組的互動作用需要一個通用資料模型。此外,我們不希望這個改變太大,原因是 ADO 內還存在若干很好的功能,放棄它們是一件可惜的事情。

JavaScript Recordset 對象,就其內在的簡單性而言,不過是一個次數的標誌。我們需要提取 ADO 記錄集的本質,並將其重新構建成可以便利地在任意平台上進行傳輸和處理的另外一種東西。HTTP 提供了得到廣泛接受的網路渠道。XML 將廣泛接受的資料描述的基礎結構集合在一起。ADO+ 是對 ADO 的較小改進,它使之成為一個用於建立分布式和資料共用應用程式的基於各種標準的編程模型。


--------------------------------------------------------------------------------




相關文章

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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。