现在的位置: 首页 > 综合 > 正文

请问NHibernate+spring.net+atlas和ibatis.net+castle+magicajax

2013年05月11日 ⁄ 综合 ⁄ 共 2222字 ⁄ 字号 评论关闭

其实castle是集成了nhibernate的,而nhibernate对存储过程支持性不太好,所以castle对复杂查询支持的不是太好,这点不如
ibatis.net。castle里的active  
records对多表更新是事务支持也不太好,但是复杂查询什么的可以用HQL语句,所以大部门的查询也能应付的了,另外castle里还有
IBatis.net   Facility和NHibernate  
Facility,让事务和多表更新更方便了,ibatis.net灵活,可以在配置文件里写SQL,但是这样就不如nhibernate更OO了。其实
持久层还有一个比较好的就是nettiers2+codesmith,现在对.net  
2.0支持的也特别好,而且是符合微软的数据访问最佳实践,性能我感觉也是最NB的,它用了entlib的DAAB。我以前研究的CMP持久模式现在感觉
也没啥优势了,虽然java那边的ejb3.0好像还是推荐容器托管持久性。持久层框架就总结这么些了。  
   
 
业务层框架spring.net好像是基于工厂方法+向接口编程+Context来实现AOP,而且它的配置文件很复杂,比较麻烦,而Castle的
AOP虽然配置文件简单,但用了大量的反射,估计性能不如spring.net,而且spring.net提倡面向接口编程,对程序架构有个好的引导。  

   
 
表示层框架.net这边没有webwork和structs对应的东西。但是大家可以看看智能客户端的应用块CAB,那个挺值得研究的,web表示层现在
都关注ajax,我只用过ajax.net和teed的ajaxhelper,感觉这两个都挺灵活的,但不强大,magicajax和atlas没用过,
不过听说这两个的ajax容器更强大一些,而且atlas调用webservices的方式好像更容易维护,另外像google,yahoo等都推出了一
些客户端的ajax  
UI,挺不错的。关于ajax也确实想找个好的框架,不过如果大家直接给推荐一个我就省的都一个一个的试用和评估了。另外推荐《ajax实战》这本书,写
的简直太好了,一些思路特别值得借鉴,考虑问题也很全面细致。  

 

 

1、 开源框架选择:
数据持久层Nhibernate和IbatisNet这两个都是非常优秀的数据持久层,
Nhibernate是优秀的Hibernate的
dotNet移植版本,
IbatisNet是Data
Mapper框架,也是JAVA版的Ibatis的移植版本,在dotnet的开源社区一样是非常受欢迎的一个工具。
Nhibernate用于支持非常好
的面向对象的设计的模型,
IbatisNet用于支持应用程序的移植(已经存在数据库,处于生产状态),这两个框架对开发人员的要求。这样就具有更大的弹
性。
IOC容器Spring.Net和Castle,这是两个dotnet非常优秀的IOC容器。
Spring.Net同样是Java的Spring
的移植版本,目前的版本是0.6,
Castle则是dotnet下出现新的IOC容器,它的功能,成熟度方面比Spring.Net好得多,框架中准备采
用Castle.
最后的平台的技术架构就是Nhibernate/IbatisNet + Castle + ASP.NET
2、 架构整合:
Web层的Asp.net负责数据输入输出,
响应用户事件,及输入校验的工作,Web层上如何得到Nhibernate的Session和IbatisNet的SqlMapper?本架构中的
DAO,Service以及
Nhibernate的Session和IbatisNet的SqlMapper都是通过Castle进行管理,Web层如何得到Castle
IOC容器的实例呢,这里采用HttpModule来处理之,使用用HttpContext.Current.Items来保存容器实例,参看http://www.tobinharris.com/nhibernateasp.aspx

Asp.net页面通过Service处理业务逻辑,Service负责use case逻辑, domain相关的逻辑委托给domain
model去实现. Service通过DAO完成对domain model的持久化工作. Service负责数据库事务和NHibernate
Session/IbatisNet SqlMapper的管理。Domain
model负责表示问题域的数据,DAO使用Nhibernate/IbatisNet持久化数据以及查询. 在实现DAO时,
我们使用了Castle的Nhibernate/IbatisNet DAO Support,极大地简化了代码,
很多方法都只用简单的一行完成。这样的架构优点很明显, 层次清晰, 各层的职责也明确, 便于分层设计与开发, 结合mock和Castle的IOC,
unit test也是非常容易的. 而且后台(Service, domain model and
DAO)的代码不依赖于Asp.net框架,同样的代码可以在Web App也可以在WinForm上面使用,只需更换UI层。
 
使用的框架工具的链接

抱歉!评论已关闭.