俺的回收站

架构分析 解释编译原理
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

几种 Dotnet ORM 库的比较

Posted on 2006-12-30 22:13  Riceball LEE  阅读(9788)  评论(38编辑  收藏  举报
到底哪一种最好呢?必须考虑序列化和反序列化的速度要快,占用内存小,并且不能有内存泄漏,容易使用。唉,难找啊。
我粗略看了下几种的ORM,请各位大侠不吝指教,小弟感激为盼。


国内:

Web Sharp: http://websharp.sf.net
License:  BSD License, GNU Library or Lesser General Public License (LGPL)
.Net 版本: .Net Framework 2.0

入门文档写得不错,清晰,上手容易,同时也一下子就说清楚了WebSharp的意图以及覆盖范围。不过框架的层次就语焉不详了。

Websharp的目标,是开发一个开源的基于Microsoft.Net的轻量级的应用软件系统开发框架,包含以下内容:
 * 一个轻量级的O/R Mapping框架
 * 一个轻量级的AOP框架
 * 一个轻量级的ServiceLocator,主要目的是为整合不同服务端技术的客户端编程。

Websharp ORM主要特点是使用Attribute作为描述映射的方法,简单明了,并且,对开发人员来说,只有PersistenceManager、Query、Transaction等极少数接口需要掌握,上手快,使用非常方便。只需要普通的类就可以进行O/R的转换,不需要从指定的类上派生。


遗憾:
  无自动代码生成器,要手工写实体类。

Kanas.net:  http://www.cnblogs.com/barton131420
License: GNU LESSER GENERAL PUBLIC LICENSE
.Net 版本:.Net Framework 1.1


优势:
 * 它的设计思想也是使用Attribute作为描述映射的方法,同时多了一个 CodeGen IDE附加工具,使用XML格式文件作为输入,自动生成类的代码,不过VS2005下不能使用。并提供了基本NUnit一些测试【应该顺便测试下运行效率】。
 * 限制特定查询条件它通过内建的 Constrant 系列对象实现,据作者说可以可以满足90%以上需要的查询条件,使用简单【建议作者提供一个复杂查询的例子】。也可以自行派生,如:查询月日是否相同,定义的DayConstrant类。

遗憾:
 * CodeGen 工具没有提供源码,并且该工具必须在VS2003 IDE下使用,不爽【建议最好有一个能独立运行的CodeGen工具】。
 * 帮助文档极不友好, Kanas.Framework 的基本描述,设计目标,覆盖范围都没有,帮助文件里类的说明用词晦涩难懂,还不如直接看源代码。上手难。
 * 实体类必须从 BizObject 上派生(实际上它的BizObject也只是一个壳,所有的数据都是交由 DataCell 控制)


NBear: http://Nbear.org
License: BSD.license
.Net 版本:.Net Framework 2.0
用到的第三方库: Castle Project

实体类必须定义成接口从 IEntity 派生,同样使用 Attribute。
提供NBear.Tools.EntityGen.exe 工具从数据库表和视图生成对应的实体类,目前只支持SqlServer和Access。
入门文档极多,上手并不太难,感觉该库的侧重点是Web结合方面,很是不错,正和我的需要,就是不知道速度
性能和内存占用如何。
可惜没有对自身框架做描述和解释的文章。文档大多以教程为主,说明如何用。

NBearV3 SDK.chm      无法看到内容,报告脚本出错,装的是IE7内核。似乎是从源代码自动生成的文档。
NBearV3TotoursCN.zip 只是教程,以及为啥取名未NBear【汗,这个谁关心啊,取名字嘛作者的权力】,关键是架构说明。依然只是简单提了一句,还是说的使用的是IEntry, 没发现什么变化:NBear的核心包括一个泛型、强类型的的数据持久化接口、一组接口式的Entity定义组件、高性能 XML/JSON序列化支持、服务工厂、分布式服务队列和Web组件。

最新提供了一个简单的NBear的读写性能测试,可以参考: http://nbear.org/Modules/Articles/Detail.aspx?i=33

NObject:  http://www.macrobject.cn/cn/nobject/index.htm
Requirements:     .NET Framework 1.1 or 2.0
License: 目前还是商业许可。
NObject O/R Mapping 框架使您能完全通过面向对象的方式访问数据库数据。NObject O/R Mapping 框架包含了 OQL.NET,一套基于 C# 和 VB.NET 等原生 .NET 语言的强类型对象查询语言 (OQL, Object Query Language)
附带的 Macrobject CodeAuto 代码生成器能帮您自动生成所有的持久类代码。
性能待查。

iBATIS.NET

The iBATIS Data Mapper framework makes it easier to use a database with Java and .NET applications. iBATIS couples objects with stored procedures or SQL statements using a XML descriptor. Simplicity is the biggest advantage of the iBATIS Data Mapper over object relational mapping tools.

To use the iBATIS Data Mapper, you rely on your own objects, XML, and SQL. There is little to learn that you don't already know. With the iBATIS Data Mapper, you have the full power of both SQL and stored procedures at your fingertips.

Are you interested but want to know what others have said? Well, first see the various articles and books that have covered iBATIS and read some of our user feedback. Then, learn how to simple it is to use the iBATIS Data Mapper by reading the .NET Quick Start Guide!


http://ibatis.apache.org/dotnetdownloads.cgi

NickLee.ODRM和演示源代码下载 基于 IBATIS

License: Apache License 2.0.

国外
NHibernate for .NET
Release date:      03.11.2006
Requirements:     .NET Framework 1.1 or 2.0
还未看,从java的Hibernate移植过来,如果没有利用CLR的特色,只是为了移植而移植,那就~~

DevExpress XPO
License: 商用
还未看

http://www.howtoselectguides.com/dotnet/ormapping/
这篇文章不错,告诉你如何选择ORM工具,以及列举出了国外常见的ORM工具【English】: