多年以来,NHibernate 一直是.NET 平台的首选 ORM 框架,而且尽管 Entity Framework 已经取得成功,但很多人在新项目中仍然会将 NHibernate 当做第一选择。不过开发者的缺乏严重制约了该框架的发展。
目前只有两个重要的活跃开发者,一个是Fourth Media 的Alexander Zaytsev,一个是Oskar Berggren。他们在准备.NET 4.0 上的NHibernate 4 时取得了长足进步,但无法改变.NET 4.0 于三年前发布这一事实。此后又出现了很多变化。最明显的是.NET 4.5 中async/await 的引入,该特性很快成为任何处理I/O 的库的至关重要的部分。据 Ricardo Peres 介绍,问题还不止于此,还存在诸如在 LINQ 查询中缺乏对左连接的支持,需要更多文档,以及“Iesi.Collections 这一难以理解的集合库的使用”等问题。他继续说道:
在我看来,NHibernate 的问题在于缺乏领导。据我所知,NHibernate 的下一个版本是 3.4 还是 4,除了 bug 修复还会有哪些特性,这些都不得而知。更不用说 NHibernate 会发展成什么样,何时会支持.NET 4.5 的 async 构造等等问题了。NHibernate 开发邮件列表非常安静,到目前为止,上面这些问题,还有其他种种问题,都还没有回应。
尽管 Entity Framework 在功能上远远落后于 NHibernate,相信我,确实如此,但是它正在发展。Entity Framework 有领导者,有知名的团队,这样公众就可以了解相关讨论。开发团队也可以从社区以请求甚至代码补丁的方式得到建议,而且有些建议已经加入到主线产品中。不久前,下一个主要版本 Entity Framework 6 也已经宣布,而且已经有了公开的 Beta 版本,它指出了方向。当然,任何人都可以从 CodePlex 下载当前版本。诚然,它不会处理 NHibernate 的任何强项,相反,它正随当前趋势而动,换句话说,就是异步特性、集成.NET 4.5 并符合其约定。
Adam Bar对此也有共鸣:
4.0 计划中有什么新特性吗?好吧,是有一些,但我认为没什么让人印象深刻的特性。更好地支持SQL Server 2012 (比如 sequence 和 limit 特性),还将直接支持Ingres9 ,其他一些方言特性也会有所改进。但是必须承认,对现有用户而言这些变化并不算大。当然会有一些bug 修复和小的改进,还会有一些计划中的特性,比如Linq 提供程序( NH-3186 、 NH-2852 、 NH-3056 、 NH-2915 和 NH-3256 )和代码映射( NH-3280 和 NH-3313 )。Linq 查询的性能也可能会有重大改进。
并不是说这种状况无法改变。NHibernate 社区仍然相当庞大,还有很多无法切换到其他 ORM 框架的代码基。现在需要的只是把这一切调动起来。
评论