当前位置: 首页 > news >正文

几种.NET平台数据持久化框架介绍

原文连接:http://yuxnet.blog.163.com/blog/static/164863495201131532223362/

在.NET平台下,关于数据持久层框架非常多,本文主要对如下几种做简要的介绍并推荐一些学习的资源:

1.NHibernate

2.NBear

3.Castle ActiveRecord

4.iBATIS.NET

5.DAAB

附加介绍:DLinq

 

一.NHibernate

提起NHibernate,相信大家都不陌生,NHibernate来源于非常优秀的基于Java的Hibernate关系型持久化工具,它从数据库底层来持久化.Net对象到关系型数据库,NHibernate为我们完成这一切,而不用自己写SQL语句去操作数据库对象,所写的代码仅仅和对象关联,NHibernat自动产生SQL语句,并确保对象提交到正确的表和字段中去.大量减少开发时人工使用SQL和ADO.NET处理数据的时间. NHibernate可以帮助消除或者包装那些针对特定数据库的SQL代码,并且把结果集从表格的表示形式转换到一系列的对象去。NHibernate采用XML文件配置的方式,每一个实体类都会对应一个映射文件,如下面的例子:

官方主页:http://www.nhibernate.org/

学习资源

园子里首推DDL的Blog:http://www.cnblogs.com/renrenqq/,有NHibernate文档的中文翻译以及DLL写的一些非常优秀的NHibernate文章。

大名鼎鼎的张老三:http://blog.csdn.net/billy_zh/category/22383.aspx

Aero的Nhibernate学习手记系列:http://www.cnblogs.com/chwkai/category/32514.html

无心之柳的Blog也非常值得推荐:http://www.cnblogs.com/9527/

博客园O/R Mapping团队:http://www.cnblogs.com/team/ORMapping.html

 

二.NBear

园子里Teddy开发的NBear大家都非常熟悉,现在已经发布了3.0正式版。NBear包含的组件不仅仅是数据持久层,还包含了IOC,分布式组件和Web组件。看一下Teddy对于NBear的介绍:

NBear的核心包括一个泛型、强类型的的ORM数据持久化接口、一组相关的Entity相关组件、高性能分布式组件、Web组件,因此:

1、NBear最适合开发各类基于ASP.NET 2.0,对性能要求较高的Web程序。NBear.Web组件提供了许多加速Web开发的组件,将使您基于标准 ASP.NET方式的开发效率大大提高;同时,简单易用、性能突出的泛型持久化支持,则将使您能够将更多注意力集中到业务开发,同时也不会有传统ORM持久化框架的性能问题和繁琐配置需要(NBear几乎不需手动配置,性能则接近DAAB)。

2、基于MQ和.Net Remoting的高性能分布式组件,将使您开发和维护分布式程序更加容易。一个基于NBear.IoC模块的开发的应用程序甚至无需重新编译就能部属为真正的负载均衡的分布式程序。

3、对于桌面应用程序,NBear同样是一个几乎没有什么学习曲线(多少人会为写一个小小的日历程序而仔细研究透彻Hibernate的参考手册?)、实用高效的数据持久化方案。

4、随着NBearV3带来的全面的ORM支持、更详细的文档和教程,和全面的代码生成工具,NBear也已经可以被用于企业级程序开发。

官方首页:http://teddyma.cnblogs.com/articles/Ilungasoft_Framework.html

学习资源

学习资源当然首推Teddy的个人Blog:http://www.cnblogs.com/teddyma/

博客园NB团队:http://nbteam.cnblogs.com/

 

三.Castle ActiveRecord

ActiveRecord是Castle中的一个子项目,现在的版本是RC1。它同样是一个非常优秀的持久层框架,在底层封装了NHibernate,改用Attribute来代替配置文件,这样就不用再像NHibernate那样去编写复杂的配置文件。

官方主页:http://www.castleproject.org

学习资源

官方文档:http://www.castleproject.org/activerecord/documentation/v1rc1/index.html

叶子的家:http://wj.cnblogs.com/

TerryLee的Castle开发系列:

http://terrylee.cnblogs.com/archive/2006/04/28/castl_ioc_article.html

Castle项目成员之一ayende的Blog:http://www.ayende.com/Blog/

 

四.iBATIS.NET

iBATIS.NET分为DataMapper和DataAccess两部分,应该说DataMapper是这个框架的核心,DataMapper使用XML文件来实现从实体到SQL statements的映射,学习起来非常简单,是用DataMapper后,我们可以自由的使用SQL语句或者存储过程;DataAccess允许我们通过一个简单的接口来操作数据,而不必了解底层实现的细节。

官方主页:http://ibatis.apache.org/ 
学习资源

官方文档:http://opensource.atlassian.com/confluence/oss/display/IBATIS/Quick+Start+Guide

善友的iBATIS.NET开发指南系列:http://www.cnblogs.com/shanyou/archive/2006/04/29/388610.html


五.DAAB

DAAB是微软Enterprise Library中的一个应用程序块,能够帮助我们实现通用的数据访问,所以也把它列在这里介绍一下。DAAB使应用程序中的数据访问在不知道具体的数据库系统的情况下进行,相信很多朋友对DAAB都很熟性并且已经在项目中使用,就不多介绍了,看一个简单的代码片断:

官方主页:http://msdn.microsoft.com/practices/

学习资源

企业的帮助文档和Hands On Lab

TerryLee的Enterprise Library系列:http://www.cnblogs.com/Terrylee/archive/2006/08/01/Enterprise_Library.html

 

附加介绍:DLinq

DLinq虽然不能算是开源框架,但是说到数据持久,还是提一下比较好,DLinq是微软下一代数据库集成查询语言,在这之前微软曾经尝试过ObjectSpace,最后是不了了之。DLinq实现的方式有点类似于前面说过的ActiveRecord,不支持使用外部的XML配置文件,而是使用了Attribute的方式,如下代码片断所示:

官方主页:http://msdn.microsoft.com/netframework/future/linq/

学习资源

下载LINQ May CTP版:http://msdn.microsoft.com/data/ref/linq/

ScottGu的Blog:http://weblogs.asp.net/scottgu/default.aspx

 

最后值得一提的是,微软又推出个Ado.net vNext,使用映射文件来配置,更加类似于NHibernate。关于持久层框架,还有很多,这里就不再介绍了,如Grove等。

相关文章:

  • php中Maximum execution time of 120 seconds exceeded时间超时错误解决方案
  • 矩阵键盘 数码管
  • 使用U盘代替光盘来刻录ISO镜像文件的方法
  • linux 函数
  • MyBatis笔记——Mapper动态代理
  • python教程
  • C语言 实现 给定两个整形变量的值,将两个值的内容进行交换
  • 更为适合并发的极简易队列
  • 2016年一些面试题的整理和心情--1异或到100
  • WINDOW10下修正CHROME字体问题解决方案
  • 不能在 DropDownList 中选择多个项。其解决办法及补充
  • 如果使用得当,MySQL 也可以化身 NoSQL
  • 一些非常经典的awk小技巧
  • Tarjan 求强连通分量
  • css3 多行文本 溢出 省略号
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【面试系列】之二:关于js原型
  • Android 控件背景颜色处理
  • GraphQL学习过程应该是这样的
  • Iterator 和 for...of 循环
  • Java到底能干嘛?
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • mockjs让前端开发独立于后端
  • Mybatis初体验
  • Mysql5.6主从复制
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • vue2.0项目引入element-ui
  • vuex 学习笔记 01
  • 初探 Vue 生命周期和钩子函数
  • 从零开始学习部署
  • 关于使用markdown的方法(引自CSDN教程)
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 基于Android乐音识别(2)
  • 为什么要用IPython/Jupyter?
  • 赢得Docker挑战最佳实践
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • # 安徽锐锋科技IDMS系统简介
  • #13 yum、编译安装与sed命令的使用
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (C语言)共用体union的用法举例
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (剑指Offer)面试题34:丑数
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)程序员疫苗:代码注入
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)