亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ADO+ 引導數據種類的演變(轉自 ms 二)

2019-11-18 21:35:40
字體:
來源:轉載
供稿:網友
 
   
ADO+ 增加了哪些內容?



用最抽象的話來說,ADO+ 是具有更大的可伸縮性和互操作性的 ADO。就對象模型及編程問題而言,ADO 與 ADO+ 是完全不同的兩個實體。盡管這樣,ADO+ 源自 ADO 并保留了它的鼓舞人心的原則。



以更多互操作性和可伸縮性充實 ADO 的關鍵在于斷開這個概念。在允許客戶機端的腳本代碼實現諸如排序、過濾和文檔/視圖模型之類的有趣和交互式功能的同時,斷開的記錄集作為一種保留系統資源的方式被引入到 ADO 2.0 中。ADO+ 與 ADO 相比具有三個主要優點:互操作性、增強的可伸縮性以及強類型。此外,ADO+ 便于數據組件間的數據共享以及在表中的記錄間進行導航。



ADO+ 從一開始就被設計為對斷開的數據集進行操作。斷開的記錄集只能有益于應用程序,因為它們是數據的本地視圖,能夠較快地處理和傳輸數據。ADO+ 將 xml 用作通用的傳輸格式。只要接收組件運行于有 XML 分析程序可用的平臺上,就可以提供許多功能,同時確保互操作性。通過 XML 進行傳輸時,接收者不再必須是一個 COM 對象。XML 是一種簡單但卻功能強大的基于文本的標準,它近來已廣為業界所接受,因而,目前有理由期待差不多每個平臺上都會有一個 XML 分析程序。這樣的話,接收組件就不會有任何的體系結構限制。任何一對軟件組件都可以共享 ADO+ 數據,只要它們同意將相同的 XML 架構用于傳輸數據格式。圖 2 對 ADO+ 適用于現有體系結構的方式進行了說明。





圖 2. 在 DNA 方案中使用 ADO+



表示層可以通過 Win Forms 或 Web Forms(這兩種編程單元專用于 Microsoft Visual Studio.NET 平臺)使用或創建數據集。在任一種情況下,運行于業務層的組件都接收一個 XML 流并進行任意處理。這些組件可以重新構建一個 ADO+ 環境,也可以將數據按原始 XML 處理并使其適合于發送到物理數據存儲器中。業務組件可以獲取 ADO+ 數據,將其轉換為 XML,然后將其發送回客戶機。任何可以理解 XML 的應用程序都可以在任一點上介入這一架構。



可伸縮性是分布式系統在不喪失效率的情況下對數目逐漸增長的客戶機進行服務的能力??缮炜s性是一個常與數據庫有關的術語,這是由于分布式系統很大程度上依賴于數據庫??缮炜s性無論對于數據庫服務器還是對于封裝了數據訪問操作的任何軟件制品都是一個可以持續存在的問題??缮炜s性的最大敵人就是對關鍵資源的濫用。在分布式系統中,關鍵通常意味著有限。數據庫連接就是可以影響可伸縮性的關鍵資源的一個示例。固定數目的連接的可用性對系統的增長及其能力形成了一個實際的限制。好的軟件了解這種情況并采取適當措施限制其影響。ADO+ 對這一問題的處理是怎樣優于 ADO 的呢?并不是說 ADO 是不可伸縮的,而是說對斷開的和內存中的表的內在使用(這是 ADO+ 的特征)使 ADO+ 成為內在具有更大可伸縮性的解決方案。它具有更大可伸縮性的原因在于斷開的數據集不在很長的時間內保留鎖或保持打開連接。如果使用 ADO,您必須編寫代碼才能獲得這一功能;而使用 ADO+ 則會免費獲得這一功能。



將 XML 用作數據集的傳輸語言可以比 ADO 更有效地進行數據共享。首先,繞過諸如記錄集之類的 COM 對象所必需的 COM 匯集使組件可以使用它們要使用的任意數據類型的集合。這還會帶來更好的性能,因為不再需要確保記錄符合標準的 COM 數據類型的數據類型轉換。XML 和 HTTP 的使用還允許數據跳過防火墻。正常情況下,防火墻允許 HTTP 數據包通過,但會阻止任何試圖經由端口號不是 80 的端口進來的任何其它內容通過。





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





ADO+ 的構成要素



現在我要介紹主要的 ADO+ 對象。我們以所有內容的起源開始,即 DataSet 對象。



數據集是 ADO 記錄集的演化。數據集不過是數據庫的斷開連接的內存中的視圖。就您可以擁有動態創建的數據集和數據表而不需要來自數據庫管理系統 (DBMS) 的任何信息而言,數據集與數據源沒有任何嚴格意義上的關系。換句話說,數據集使用了一些添加到 ADO 記錄集中的功能:斷開時工作的能力以及計劃性地創建并以任何種類數據進行置入。數據集可以包含任意數目的表,每個表通常(但不總是)對應于一個數據庫表或視圖。DataTable 對象對應的表不過是一些行與列的集合。每一行保留其原始狀態及其當前狀態。



ADO 記錄集一直經常以一種充當某種超級數組的通用數據類型出現。同樣,ADO+ 數據集是一種提供以下功能的超級記錄集:



一種容納數據的更好和更豐富的編程接口。





一種不需要與實際數據源的任何內在綁定而提供更為廣義的數據視圖的對象模型。





一種用于輸入和輸出的基于 XML 的標準控制臺。

ADO 記錄集基本上是一種(可能是分層的)記錄集合,它帶有一些特定方法,用于完成一些有趣功能。其中包括包括滾動、排序、過濾、書簽。記錄集本質上是表在內存中的副本。而數據集看起來更象 SQL Server 或 access 數據庫,它是一個包含更多表、特定視圖和外鍵關系的實體。



數據集對象模型反映了這一較大的范圍,它允許您查看跨越多個數據表、關系、擴展屬性和行的多個集合的可用數據 — 這還可用于說明非持久數據或只是來自不是數據庫的另一個持久存儲介質的數據。



ADO 記錄集允許您將內容保存到 XML 中,并從一個外部 XML 文件重新構建該內容。然而,采用的缺省 XML 架構是針對導出/導入 ADO 記錄集而優化的,而不是針對實際數據交換。ADO XML 架構包含許多關于列類型和位置以及其它元數據的信息。如果您希望從某一 XML 文檔中重新構建記錄集,則這些信息是至關重要的,但如果您只是希望傳遞數據并使接收者使用它,則這些信息沒有什么用處。有了 ADO+ 數據集,XML 架構更為精練,因為被表示的對象與關系數據庫沒有直接關系,盡管對象可以用來精密地再現數據庫。ADO+ 數據集對數據進行描述,而 ADO 記錄集則對由某一表中獲取的一個記錄集合進行描述。這就是 ADO+ 數據模型的動人之處。



ADO+ XML 架構只是再現表以及數據集中定義的關系,構建一個 DataSet 對象的責任則留給 ADO+ 運行時完成。ADO XML 格式由于過于具體而無法真正實現互操作。它還由于過于繁瑣,如果不進行數據壓縮的人工干預,它就無法進行高效的匯集。ADO+ 數據集體系結構的鼓舞人心的原則與導致我創建 javaScript 的 Recordset 對象的原因之間存在一種底層的相似之處。在這兩種情形中,您都將數據說明(例如,一個 XML 字符串)轉換為一個專用于平臺的操作對象(即一個 Javascript 對象)。在這樣做的過程中,您安全地將您的數據從一層發送到另一層,而不考慮安裝的操作系統或軟件。





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





ADO+ 命令



盡管 DataSet 對象提供一個內存中數據存儲的工具,您還需要另一個工具對各種表進行創建和初始化。這一工具就是 DataSetCommand 對象,它代表一個將使用連接和命令的細節隱藏起來的集中式控制臺。DataSetCommand 對象允許某一 DataSet 對象與源數據存儲器間的數據檢索和保存。它負責從物理存儲器中提取數據,然后將其推送到各數據表和關系中。DataSetCommand 對象還負責向實際數據庫傳輸任何更新、插入或刪除操作。DataSetCommand 對象通過底層 OLE DB 提供者能夠理解的 SQL 命令或命令字符串完成這一功能。DataSetCommand 對象以兩種形式存在:



SQLDataSetCommand 對象





ADODataSetCommand 對象

它們可以被當作在數據表和數據源中的對應表之間的代理。數據源是用于 SQLDataSetCommand 對象的 SQL Server 7.0(或更新版本)以及用于 ADODataSetCommand 對象的任何其它 OLE DB 提供者。



一般說來,ADO+ 能夠識別并處理兩種類型的數據源:SQL Server 7.0(及更新版本)以及可以通過 OLE DB 提供者進行訪問的任何數據源。這些又稱為被管理的提供者。



作為使用 DataSetCommand 對象的一種替換(如代碼示例 1 中所示),您可以通過使用諸如連接和命令之類的較為熟悉的對象,直接對被管理的提供者進行操作。



代碼示例 1



Dim oDS as DataSet

Dim oCMD as SQLDataSetCommand



oDS = New DataSet

oCMD = new SQLDataSetCommand("Select * from employees", strConn)

oCMD.FillDataSet(oDS, "EmployeesList")



Dim oRow as DataRow

For Each oRow in oDS.Tables(0).Rows

   Console.WriteLine(oRow(0).ToString())

Next



通過查看這種類型的 ADO+ 代碼,您會發現它與舊式的 ADO 編程沒有多大的差別。它具有新的對象、新的編程接口、經過改進的新功能,但代碼模式相同。如代碼示例 2 中所示。



代碼示例 2



Dim oCN As SQLConnection

Dim oCMD As SQLCommand

Dim oDR As ADODataReader

oCN = New SQLConnection(strNWind)

oCMD = New SQLCommand("MyStored
oCMD.CommandType = CommandType.StoredProcedure

Try

   oCN.Open()

   oCMD.Execute(oDR)



   While oDR.Read

      Console.WriteLine(oDR("LastName").ToString))

   End While

Catch e As Exception

      Console.WriteLine(e.ToString)

Finally

      oDR.Close()

      oCN.Close()

End Try



請注意,上述代碼具有 Microsoft Visual Basic® 7.0 引入的一些語法元素的特征 — 特別是最終取代了 On Error 機制的 Try-Catch 結構。ADO+ 代碼充分利用了提供諸如 Console 之類的系統對象的.NET 運行時服務。



還有什么特殊的功能可以幫助您確定革新的 DataSetCommand 方法是否優于使用傳統的 ADO 嗎?通過使用 DataSetCommand 對象與數據源進行通信,基本上與通過使用 ADO 連接和命令相同,并帶有一個重要的推論:所有的 ADO+ 對象,如 DataSetCommand 對象,都可以通過派生新的、更專用的類而進行定制。因此,舉例來說,您可以控制將數據集的更改傳送到數據庫的方式,以及(比方說)優化性能、對數據進行壓縮或加密、執行數據驗證以及許多其它功能。





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





強類型編程



您通過 ADO 對數據庫對象和類似 Recordset 和 Fields 的集合進行操作。除了將實際數據視為某種參數外,這種方法沒有什么錯誤:



Set oRS = New ADODB.Recordset

oRS.Open strSQL, strConn

While Not oRS.EOF

MsgBox oRS("FirstName") & " " & oRS("LastName")

oRS.MoveNext

Wend



在上述 ADO 代碼片斷中,第一個和最后一個名稱被用作進入 Recordset 和 Fields 集合的入口點。由于 Visual Basic 的缺省屬性,您可以編寫相對容易閱讀的代碼。依照 ADO,某一給定記錄字段的“完整對象模型路徑”應為:



oRS.Fields("firstname").value



此外,ADO 總是使用 Variant 數據類型,以便與基于腳本的環境(特別是
asp)相一致。



ADO+ 通過提供借助數據的自然名稱對存儲于數據集中的數據進行訪問的能力,使數據庫編程更進了一步。如果要在某一數據集中尋址某一表,您可以使用該表的 ADO+ 名稱并對使用列和行的名稱對列和行進行訪問,而不是通過基于集合的方法。此外,所有的有關變量都擁有一個特定的(與 Variant 相對)數據類型。這稱為強類型編程。上面顯示的對一個 Employees 表中的 FirstName 和 LastName 進行操縱的代碼可以按下面的形式重新編寫:



MsgBox Employees.FirstName & " " & Employees.LastName



一種具有類型的 DataSet 即是一個自 DataSet 繼承的類。采用數據集的強類型版本是有益的,原因是 IDE 自身可以實時地向您通知可能的類型不匹配錯誤,而且 Microsoft IntelliSense® 技術可以隨時向您建議一些方法和屬性。





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





摘要



ADO+ 不僅僅是對數據進行操作的另一個對象模型。從本質上說,它是在范圍更廣、跨平臺方案中的 ADO 的重現。ADO+ 是擴展的 ADO,它在能夠理解 XML 的任何平臺上與任何軟件組件協同工作。它對數據進行建模,而不是對數據庫或數據提供者。它從數據庫基礎結構中提取數據,并將其置于一種中性的環境中,數據在這種環境中就是數據,無論存儲介質、物理結構或用來對其進行訪問的 API 究竟是什么。其關鍵即是 XML,它代表了一種用于 ADO+ 數據集的 I/O 控制臺。另一個重要的方面是主要對象(即數據集)的斷開連接和在內存中的性質。



因此,您可以發送數據的 XML 說明,并讓 ADO+ 服務器端的組件將其構建為一個數據集。您也可以擁有非 ADO+ 組件,它們只是獲取該 XML 說明后對其運行自己的分析程序并獲得同樣的結果。ADO+ 專用于 Windows,但它可以與幾乎所有的平臺交換數據。請留意跟蹤 ADO+ 演變的后續文章。      
   
      
   


原作者:不詳

來 源:www.microsoft.com

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人在线免费视频| 中文字幕亚洲一区在线观看| 亚洲人成在线一二| 国产精品一区二区三区毛片淫片| 国产香蕉精品视频一区二区三区| 黑人巨大精品欧美一区免费视频| 国产精品国产三级国产aⅴ浪潮| 久久久噜噜噜久久久| 国产精品高潮呻吟久久av野狼| 亚洲男人天堂2024| 国产精品高清在线观看| 国产在线日韩在线| 成人国产精品av| 国产精品av免费在线观看| 欧美男插女视频| 亚洲欧美日韩久久久久久| 中文字幕一区二区三区电影| 亚洲综合最新在线| 亚洲日本欧美日韩高观看| 中文字幕日韩精品在线| 亚洲日韩欧美视频| 一区二区在线视频| 粉嫩av一区二区三区免费野| 日韩av在线影院| 久久久久久91香蕉国产| 国产精品久久婷婷六月丁香| 精品久久久久久久久久久久久| 亚洲精品视频免费在线观看| 日韩欧美在线视频日韩欧美在线视频| 国模gogo一区二区大胆私拍| 国产亚洲福利一区| 亚洲va久久久噜噜噜| 亚洲成人国产精品| 免费不卡欧美自拍视频| 国产精品丝袜久久久久久不卡| 国产在线日韩在线| 欧美激情视频一区| 亚洲第一福利视频| 亚洲午夜久久久影院| 国产一区二区三区在线免费观看| 日韩日本欧美亚洲| 性欧美长视频免费观看不卡| 美女国内精品自产拍在线播放| 2020久久国产精品| 国产精品久久久久久av福利软件| 国产91九色视频| 欧美激情亚洲综合一区| 国产精品久久久久国产a级| 中文字幕亚洲欧美一区二区三区| 久久精品一偷一偷国产| 日韩精品在线视频美女| 亚洲欧洲国产精品| 日韩欧美国产激情| 美日韩精品视频免费看| 亚洲精品电影网| 国自产精品手机在线观看视频| 视频直播国产精品| 久久精品国产亚洲| 久久久精品2019中文字幕神马| 国产一区二中文字幕在线看| 国产精品久久精品| 亚洲嫩模很污视频| 日韩欧美在线播放| 欧美黄色小视频| 国内伊人久久久久久网站视频| 国产精品色婷婷视频| 亚洲天堂男人天堂| 国产欧美日韩综合精品| 欧美俄罗斯性视频| 欧美激情一区二区三级高清视频| 日韩电影在线观看中文字幕| 中文字幕欧美精品在线| 中文字幕亚洲精品| 国产精品视频久久久久| 亚洲精品久久久久中文字幕欢迎你| 亚洲欧美日韩图片| 亚洲免费电影在线观看| 日韩中文理论片| 久热爱精品视频线路一| 国产精品一区二区久久久久| 国产精品羞羞答答| 色综合伊人色综合网站| 亚洲free性xxxx护士hd| 中文字幕日韩欧美精品在线观看| 欧美日韩性生活视频| 亚洲综合日韩中文字幕v在线| 国产一区二区三区免费视频| 久久精品成人欧美大片| 91久久久久久国产精品| 亚洲精品中文字幕有码专区| 国产日韩欧美在线看| 欧美精品日韩三级| 日韩色av导航| 亚洲欧洲中文天堂| 97国产一区二区精品久久呦| 国产精品精品视频一区二区三区| 亚洲va久久久噜噜噜久久天堂| 亚洲天堂av在线免费观看| 国产精品一久久香蕉国产线看观看| 亚洲一区二区三区视频| 欧美日韩中文在线| 高跟丝袜一区二区三区| 国产精品无av码在线观看| 97在线精品国自产拍中文| 久久影视电视剧免费网站清宫辞电视| 国产视频精品久久久| 亚洲一区二区久久久久久久| 精品亚洲一区二区三区在线观看| 国产精品黄色影片导航在线观看| 国产亚洲美女精品久久久| 久久久久成人网| 欧美色道久久88综合亚洲精品| 亚洲国产成人在线播放| 2019日本中文字幕| 国产精品偷伦免费视频观看的| 久久久免费在线观看| 国内精品久久久久久久| 按摩亚洲人久久| 国产精品白丝av嫩草影院| 欧美黑人极品猛少妇色xxxxx| 国产精品久久久999| 日韩视频中文字幕| 亚洲美女性生活视频| 久久久久久久久国产精品| 国产一区二区三区久久精品| 国产91精品不卡视频| 亚洲欧美日韩精品久久| 亚洲免费视频一区二区| 国产视频亚洲视频| 在线观看国产精品淫| 久久免费国产精品1| 国产精品一久久香蕉国产线看观看| 揄拍成人国产精品视频| 亚洲人成77777在线观看网| 国产欧美日韩精品在线观看| 国产999精品久久久影片官网| 日韩动漫免费观看电视剧高清| 日本亚洲欧美三级| 色综合影院在线| 国产成人中文字幕| 亚洲v日韩v综合v精品v| 欧美一乱一性一交一视频| 最近2019中文字幕一页二页| 国产亚洲精品综合一区91| 国产精品专区一| 国产精品一区二区3区| 亚洲欧美精品伊人久久| 欧美午夜精品久久久久久人妖| 孩xxxx性bbbb欧美| 久久免费国产视频| 精品国产91久久久久久老师| 国自产精品手机在线观看视频| 午夜精品久久久久久久久久久久| 久久激情五月丁香伊人| 日韩中文第一页| 欧美性猛交视频| 欧美一级电影久久| 欧美在线视频网站| 日韩欧美在线字幕| 伊人久久久久久久久久久| 亚洲xxx视频| 日韩视频在线观看免费| 91精品久久久久久久久久久久久久| 久久精品国产视频|