999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

關于在.NET平臺下XML數據訪問方法選擇的研究

2008-12-31 00:00:00段小斌
網絡與信息 2008年12期

摘要:首先對.NET平臺下訪問XML數據的四種不同的方法進行了敘述,分析了四種方法的使用步驟,并比較了這些方法在不同情況下使用的優缺點,最后闡述了選擇不同訪問方法應遵循的條件。

關鍵詞:XML;ADO;SQLXML;SqlDataReader;ADO.NET;數據集

1 前言

由于歷史及其他的一些原因,很多企業現在都擁有多種業務系統,這樣就導致了企業的信息孤島現象越來越嚴重,企業中充斥著各種格式、不同版本的信息,信息資源浪費的問題也就凸顯出來。為了解決這個問題,迫切需要將數據規范化和標準化,而XML正是應時出現的這樣一種規范。XML是由互聯網聯合組織創建的一組規范,目前XML已被大量應用于異構系統間的數據交換、數據集成、數據共享,將同一數據以不同的形式表現出來等[1]。

隨著XML的大量使用,以及各種新興的開發工具的推出,XML數據的訪問方法越來越靈活多樣,而這些訪問方法也正朝著簡單易操作的方向發展。

在.NET平臺中包含四個XML數據訪問接口:ActiveX Data Objects (ADO) 、SQLXML、SqlDataReader和ADO.NET,其中SqlDataReader和ADO.NET是兩種較新的訪問方法。本文將以連接數據庫SQL Server為例,據此來分析比較這四種不同XML數據訪問方法的性能,以決定在具體應用時應使用哪種訪問方法。

2 訪問方法

2.1 ADO方法

早在ADO2.1時,Microsoft就添加了使用結果集轉換為XML的功能,這樣就可以將一個結果集保存為一個XML文件。使用ADO從數據庫獲得XML數據的時候首先需要創建并打開一個數據庫連接,然后創建一個Command對象,接著需要得到由Command對象執行Sql語句得到的RecordSet對象,RecordSet對象中便存儲著從數據庫中獲得的數據,要將結果集轉換為XML,只需在調用RecordSet對象的Save()方法時將數據以XML的格式保存即可。

2.2 SQLXML方法

SQLXML托管類屬于SQLXML 3.0功能包,而SQLXML 3.0功能包提供改進的性能以擴展SQL Server 2000的XML功能。SQLXML托管類是.NET Framework的本地類,它們可以非常方便地向SQL Server數據庫接收和發送XML數據。3.0以前的SQLXML功能包版本有一種擴展性的問題,因為它不是在客戶端構造XML,而是將在數據庫服務器端構造好的XML返回客戶端,這樣一來,要返回的XML流就比原來SQL Server返回的二進制數據流大很多。

不過現在的3.0版本允許SQLXML將數據流作為二進制數據從服務器端返回給客戶端,然后在客戶端上將二進制數據轉換成XML。在3.0版本的SQLXML包中實現這個特性時需要設置SqlXmlCommand對象的ClientSideXml屬性為真。這時程序可使用的SELECT語句中就可以帶有FOR XML子句,當然在SQLXML托管類給SQL Server發送SQL語句前會先將FOR XML子句去掉。這樣數據庫服務器就可以以二進制格式返回客戶端數據了。而托管類會將從服務器返回的這些二進制數據再轉化為XML格式。

2.3 SqlDataReader方法

SqlDataReader類提供一種從SQL Server數據庫讀取行的只進流的方式[2],即使用一個連續只讀的指針來進行數據的存取,這種數據訪問方式是進行SQL Server數據存取的最快的方式。但由于SqlDataReader類并不能直接支持XML類型的數據,所以就必須自己編寫代碼來完成XML轉換或者運行一個返回XML的查詢過程,比如說使用For XML查詢語句。

2.4 ADO.NET方法

相對于ADO對XML的有限的支持,ADO.NET新增了很多功能,可以說,ADO. NET是ADO升級版本,它為開發人員提供了一種全新的XML數據訪問方法,在提高訪問效率的同時還能大幅簡化工作量。

ADO.NET提供了連接模式和非連接模式兩種數據訪問模式。其中連接模式和ADO使用的模式相同,而非連接模式是.NET獨有的也是為.NET所推薦的。在該模式下,一旦應用程序得到所需數據,就會同數據源斷開連接,而數據在內存中以XML形式存在,這就使此模式具有更大的可執行性和靈活性。非連接模式的核心部分就是ADO.NET中的DataSet數據集。DataSet類位于System.Data命名空間中,可以將DataSet理解為一個復雜的關系數據結構,它內建對XML序列化的支持。在非連接模式下工作時,DataSet對象能將數據以XML的形式存儲在內存中提供用戶操作使用,通過一個簡單的方法它就能將關系型的數據轉化為層次化的具有良好模式的XML數據,這就是ADO.NET機制。

使用ADO.NET方法首先建立數據庫連接,創建SqlCommand對象,然后執行帶有FOR XML子句的查詢語句,在將得到的數據傳出時,有兩種選擇,可以使用SqlCommand對象的ExecuteXmlReader方法將數據生成一個新的XmlReader對象,然后再生成XML文件;還可以使用ExecuteDataSet方法將數據存儲在一個新的DataSet對象中,然后將DataSet中的數據轉換為XML。

3 訪問方法的選擇

這四種訪問方法對訪問SQL Server中XML數據的支持程度都不同,所以在完成解決方案以及代碼量方面,選擇不同的訪問方法會產生不同的結果。

結合前面介紹的四種不同的XML數據訪問方法,以調用組件的方式使用ASP.NET頁面測試這四種XML數據訪問的性能及其可擴展性,結果得出如圖所示的性能分析結果。

要選擇合適的訪問方法,就要看哪種方法能夠更好地滿足你的要求,要考慮這樣幾個條件:首先要看訪問方法的可執行性和可擴展性,因為SQL Server數據庫中的本地數據是以二進制格式存儲的,所以將本地數據轉換為XML格式可能需要很高的費用,這就很大程度上限制了所開發的應用程序的性能;其次,因為可能有時無法控制XML的格式,還需要考慮訪問方法返回的XML格式的可操控性;最后要考慮的就是訪問方法完成功能所需要的代碼量了。

在具體使用時我們需要對以上幾個條件進行綜合權衡,選擇最適合我們應用情況的數據訪問方法,以最大限度地降低項目開發的復雜性,提高應用程序的整體效率。

4 總結

在本文中,著重介紹了.NET框架下提供的四種不同的XML數據訪問方法,以及怎樣選擇符合程序要求的方法。隨著技術的不斷進步和發展,我們可以期盼在不久的將來,XML數據訪問還會有新的更好更便捷的方法產生,同時我們的選擇余地會更加廣泛。

————————————

參考文獻

[1]張曉東.XML:聯通信息孤島[J].中國計算機報,2005(85):45-48.

[2]Microsoft..NET Framework類庫:SqlDataReader類[J/OL].(2004)[2006-3-20].http://msdn2.microsoft.com/zh-cn/library/system.data.sqlclient.sqldatareader.aspx .

[3]徐冰,李啟炎,朱茜.XML解析器應用分析[J].計算機系統應用,2002(1):30-32.

作者簡介:段小斌(1982-),碩士,廣西工商職業技術學院電子信息系。研究方向:數據挖掘,個性化服務信息推薦技術。

主站蜘蛛池模板: 日韩人妻少妇一区二区| 国产白浆在线观看| 国产精品人莉莉成在线播放| 国产国语一级毛片在线视频| 中文字幕av无码不卡免费| 亚洲欧美另类中文字幕| 51国产偷自视频区视频手机观看| 成人年鲁鲁在线观看视频| 亚洲第一黄片大全| 色天天综合久久久久综合片| 亚洲综合第一页| 综合社区亚洲熟妇p| 中文字幕亚洲另类天堂| 五月丁香伊人啪啪手机免费观看| 无码免费的亚洲视频| 青青热久免费精品视频6| 日韩人妻无码制服丝袜视频| 欧美国产综合视频| 玖玖精品视频在线观看| 亚洲一级无毛片无码在线免费视频 | 亚洲天堂免费| 免费国产好深啊好涨好硬视频| 波多野结衣一区二区三区四区 | 在线无码av一区二区三区| 欧美日韩中文字幕在线| 永久免费精品视频| 91成人精品视频| 永久免费精品视频| 国产精品成人免费视频99| 99久久精品免费看国产免费软件| 亚洲AV无码乱码在线观看代蜜桃| www.youjizz.com久久| 亚洲精品第一页不卡| 中文无码日韩精品| 四虎影视8848永久精品| 天天色综网| 久草网视频在线| 欧美精品xx| 日韩精品中文字幕一区三区| 制服丝袜 91视频| 欧美一级高清片久久99| 高潮毛片无遮挡高清视频播放| 五月综合色婷婷| 欧美人与性动交a欧美精品| 五月综合色婷婷| 欧美色图久久| 亚洲无码在线午夜电影| 国产成人乱码一区二区三区在线| 国产91视频观看| 福利国产微拍广场一区视频在线| 国产成人91精品| 亚洲综合狠狠| 国产小视频网站| 国产99视频精品免费观看9e| 亚洲中文字幕手机在线第一页| 久久国产精品国产自线拍| 激情六月丁香婷婷| 亚洲黄网视频| 香蕉久久国产超碰青草| 国产成人综合日韩精品无码不卡| 麻豆国产在线观看一区二区 | 国产精品无码AV片在线观看播放| 久久亚洲国产视频| 国产爽歪歪免费视频在线观看| 国产在线自乱拍播放| 噜噜噜综合亚洲| 69精品在线观看| 成人综合久久综合| 在线观看无码av免费不卡网站| 国产国产人成免费视频77777| 午夜久久影院| 国产成人1024精品| 欧美激情视频一区二区三区免费| 国产精品任我爽爆在线播放6080| 亚洲首页在线观看| 日本精品αv中文字幕| 18禁影院亚洲专区| 99热这里只有精品在线播放| 视频在线观看一区二区| 伊人成色综合网| 国产欧美又粗又猛又爽老| 成人无码一区二区三区视频在线观看 |