您的位置:首页 > 运维架构

NFramework开源AOP框架ORM的实现原理与应用-.NET教程,.NET Framework

2007-01-27 17:57 711 查看
 

1. 基本概念XML:NAMESPACE PREFIX = O />

对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配现象的技术。简单的说,ORM是通过使用描述语言来描述数据库与对象之间的映射关系,并将程序中的对象自动持久化到关系数据库中,本质上就是将数据从一种形式转换到另外一种形式。

2. NHibernate

NHibernate目前可谓如日中天,许多人都在谈论它,并且也得到了广泛的应用,但在我的项目经历中,即使应用NHibernate这样的好工具也有痛苦的时候,大量的xml文件让我们眼花缭乱,简单易学的HQL语言却又常常不能满足我们的要求。特别是随着系统的复杂性越来越高,再加上人员的流动,最终xml堆积如山,若干事件以后不再有人记得那个xml文件是用来做什么的了。NHibernate本身对SQL的封装做的很好,但或许这也成为了我们的束缚,对于非常复杂的业务问题,我们的调试变得更困难,要在代码与数个xml文件之间不停的查阅以期快速定位问题的所在,这增加了我们的调试难度。

3. IBatis.NET

IBatis.NET考虑到了这种情况,因此它将SQL释放出来,让我们可以一目了然。但同样也存在xml数据量过多的情况。随着系统的不断升级,我们不得不考虑膨胀的xml文件对内存的占用问题。当然,IBatis.NET可以快速的溶入到现有的项目中,在不改变既有方案的前提下为我们提供一种新的思路来解决实际的问题,这是一个不错的优点。但纵观NHibernate也好、IBatis.NET也好,其应用代码中都有一些严重的重复问题,比如说OpenSession、CloseSession、GetFactory类似这样的代码,这对只关注业务的开发人员来说也是一个不小的工作量。

4. NFramework

NFramework在设计ORM时,充分考虑了目前流行了ORM框架,如NHibernate、IBatis.NET这两个流行的产品。当然NFramework也不可能没有缺点,但它为开发人员考虑的更多。首先从部署的角度来讲,NFramework没有采用xml文件作为ORM的映射描述,而是采用了扩展元数据的方式,这在很大程度上减轻了维护xml文件的负担,在部署时也只是一个简单的DLL文件。
NFramework中的实体(Entity)本身没有包括任何CRUD相关的方法,因此可以说是一个“轻量级的实体”,你不必担心由于大量的对实体对象的new操作导致系统占用资源过多而性能有所下降。NFramework中的实体只包括映射的元数据与对象属性,因此它是轻量级的,在我们的实际测试中,在用户大量的并发操作时,创建新实体对象占用的资源微乎其微。在做到轻量级的同时,NFramework并没有以降低映射的灵活性和效率性为前提,通过自定义的元数据,不但可以映射出数据表、视图、字段、字段类型、字段长度的映射关系,还可以轻松映射出多表之间的关联信息。下面我们来比较一下NFramework与以NHibernate为代表的ORM框架之间的不同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: