桦山涧

桦山涧
Asp.net ---->知识改变命运!
posts - 261, comments - 171, trackbacks - 6, articles - 3
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Data Access,依旧是主角

Posted on 2006-10-26 18:26 桦林 阅读(...) 评论(...) 编辑 收藏
    Win32下的ADO无疑是一项非常重要而且成功的技术,从某种意义上来说,正是因为它的成功才极大的促进了基于Windows平台的上的商业应用,因为它提供了统一的编程模型,能够让开发人员在异种数据库连接的环境下使用通过的模型去开发应用。
    在.NET时代,ADO.NET将数据访问进一步“进化”。不要简单地以为ADO.NET只是ADO的一个简单升级,除了在一些模型的命名保持一致以外,ADO.NET与ADO之间并没有太多本质性的关联。ADO.NET不同于ADO的全新的数据访问模型,是针对于托管环境下的数据访问接口。ADO.NET究竟带来什么呢?我们可以看到如下的改变:
    1) 除了提供了传统ADO的Connection、Command以外,我们意外的没有看到Recordset这样的对象,而是提供了DataReader用来处理向前滚动的数据访问,最最重要的是加入了DataSet这样的概念,因为如此,我们能够实现很多数据库应用中需要的“Disconnected Application”,能够实现“InProc-Database”,而这一切,通过DataSet能够得到很好的解决。
    2) 以更加透明的方式提供了数据库连接池,同时,开发人员能够通过编程的方式控制具体的运行方式。
    3) 提出DataAdapter,让开发人员能够以一种统一的方式去访问异种数据库,唯一的区别在于具体适配器的实现不同罢了。
    4) “Typed Dataset”让开发人员能够非常方便的将DataSet 中的Table、Field映射到自定义类。
    5) 对于XML提供了良好的支持,所有的DataSet都能够非常容易的系列化或者反系列化成XML文档。
    在Java社区兴起的以Hibernate和JDO为代表的数据持久框架,从某种意义上说,正在冲击传统的数据访问技术。许多人会有这样的疑问,我们是不是还需要学习如ADO.NET这样的数据访问技术,或者马上转向O/R Mapping框架的学习?不得不承认有些时候使用O/R Mapping能够减少开发的工作量,但是从目前的技术来看,将对象直接映射成数据库模型依旧不是大型应用中推荐的做法,更稳妥的方式依旧是在传统的数据库上开发应用,这个时候数据访问技术是不可或缺的。Hibernate已经被移植到NHibernate,但是距离“可用”还需要一段时间。至于ObjectSpace,也不会在近期之内得到应用。
    鉴于如此,数据访问技术特别是在.NET下依旧是未来几年最重要的技术之一。
    许多ADO.NET的介绍,如通过DataReader优化数据访问,通过Adapter填充数据表等等,有许多专题都可以提供给我们学习,ADO.NET 2.0的新特性也是这一方面的延伸。