技术开发 频道

.NET挑战J2EE域对象



    在.NET中对域对象的支持

     在.NET中对特定领域对象的支持不像在J2EE中那么完善,不过这并不完全是一件坏事,在某些方面J2EE的设计过于复杂了。

     在我看来,.NET的做法实际上非常好,它让开发者不用关心更多相关的体系结构细节问题,包括.NET中需要更少的处理.XML文件、更少的配置文件和目录引用等等,在.NET中关键的API就是ADO.NET,这点与Java中的JDBC非常相似。

     在.NET中惟一感觉到不足的是,.Net与其他厂商的产品配合使用时,API的标准化没有很好的设计。例如当你进行对Oracle数据库访问的编程的时候,使用的是对象而不是接口,因此你写代码的时候不得不使用“生硬的绑定”。在JDBC中,我们通常是针对接口编写代码,从来不会捆绑到任何特定厂商的对象上。我非常惊讶,ADO.NET的设计者竟然没有考虑到遵循接口设计的隔离原则。

     在对象关系持久化方面,有一个专门为.NET设计的Hibernate版本,通常被称作NHibernate。Nhibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具。

    这个产品的起步很晚,而且已严重落后主流Java的Hibernate版本。NHibernate目前是基于Hibernate 2,但是现在Hibernat的主流版本是3.1。这使得两者的功能具有很大的差别。这个项目在社区活跃性还远远不够,与Hibernate相比,受到人们的关注度还非常低,不知道是什么原因,似乎.NET开发者并不是很在乎如此强大的对象关系框架。

     在NHibernate出现之前,微软也在考虑这方面的问题,微软曾经试图推出它自己的对象关系工具-ObjectSpaces,但是由于某些原因一直没有推出。我查阅了该规范的早期版本,感觉它与当代的对象关系解决方案非常相似,我感觉ObjectSpace将在微软下一代的微软操作系统中将出现,但是很多人不看好微软的对象关系工具,微软也认为它是一个可有可无的东西吧,没有全力来推广它,但是如果微软在方面发力的话,J2EE可能也就只有招架之功了。

     最后,在.NET 2.0中一个非常优秀的功能是它的缓存机制,缓存机制是唯一一个最重要、最具有价值的、为高负载应用程序所增加的功能,如果对其应用得当,它可以成为得心应手的工具,J2EE已经通过开源支持或商业插件具备缓存机制,而.NET也对其进行了支持。相比之下,我更喜欢.NET的内置支持,尽管它可能不像在.J2EE中的某些插件那么强大,但是它也可以干净利落的完成属于它的任务。

     总结

     微软公司当初没有想到域对象模式,会占领这块市场,认为.Net本身的这些功能,可以解决所有问题,但是往往过于自傲的性格,却会阻碍他前进的脚步,因些.Net首先要做的是就是很好的ORM支持。

     J2EE已经具备了所以域对象的功能。但是有了这些功能还是远远不够的,J2EE应该从开发的角度出发,开发出更轻便更快捷的产品来,J2EE的瘦身计划刻不容缓。
0
相关文章