我是从打开始做程序那天起(92年了吧)就用微软的东西的,从QBasic、Foxpro、VB、VC到.Net,懒惰的“享受”微软提供的一切,微软之外的东西几乎都不关心,包括当年的Java浪潮。那时候的思想就是“用开发工具写代码就是做软件”。
可是后来,作的东西也越来越象样,才发现微软给的东西有时候真别扭!于是乎开始正经学习软件工程和面向对象的好多东西,这样开始接触一些J2EE领域的东西,才开始发现微软对于企业级应用开发的不成熟。在微软目前的体系内缺乏一个成熟的企业级应用框架。尤其没有一套数据持久层框架,在数据访问方面只能使用ADO.Net(可以理解为“表模式”,参见Martin Fowler的《企业应用架构模式》)。DataSet实际上是关系型数据的代码模型,但是根据面向对象的观念,我们更需要的是领域模型。这就需要我们拥有一套O/R映射机制,而.Net 1.1版本里并没有给我们现成的。过去在www.uml.org.cn上曾经看到过国内有人自己做过一些数据持久层框架,但是缺陷是很多的。偶然间在一篇讨论数据持久层的文章中看到J2EE领域有Hibernate这样一个轻量级数据持久层框架,根据我的经验,一般来说J2EE领域里优秀的开源工程都会用人作.Net版本。果然,在sourceforge上发现了NHibernate,当时还是0.4Alpha版本(最新是0.7 Beta)。学习NHibernate的过程相对来说是有点困难的,因为资料太少,大多依靠Hibernate的中文资料,国内还算不错的入门资料也就是“张老三”的网站。
到目前为止,我已经能够使用NHibernate做一些应用了。但是NHibernate的体系是很大的(比如复杂的HQL,NHibernate性能调节等等)。有了NHibernate,我们可以在开发应用的业务逻辑时忘记数据库的存在,我们基本不必关心使用的是什么数据库(在不使用某些数据库专有功能前提下),也不必写一大堆SQL,只需要认真地思考和设计真正的逻辑!!
从现在的到的消息来看,微软下一代开发工具Whidebey(大约在今年夏天或者更后推出),拥有了一个ObjectSpaces数据持久层,不知道它是否有NHibernate这么强大。谁让我们做这个呢,还要学啊弟兄们。但是,至少在Whidbey推出之前,NHibernate还是最好的,我在我的Blog开这么一个NHibernate文章专栏就是想和大家分享NHibernate的开发技巧和知识,希望能够的到大家的宝贵意见和批评。
最后,在这里让我们感谢伟大的开源工程师们!