当前位置:首页 > 发言稿 > 关于在.NET平台下XML数据访问方法选择的研究:JSNET数据
 

关于在.NET平台下XML数据访问方法选择的研究:JSNET数据

发布时间:2019-01-01 05:34:54 影响了:

  摘要:首先对.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].https://msdn2.省略/zh-cn/library/system.data.sqlclient.sqldatareader.aspx .
  [3]徐冰,李启炎,朱茜.XML解析器应用分析[J].计算机系统应用,2002(1):30-32.
  
  作者简介:段小斌(1982-),硕士,广西工商职业技术学院电子信息系。研究方向:数据挖掘,个性化服务信息推荐技术。

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3