请教,我的架构如此分层,不知合不合理

06-09-19 zxkr

小弟我正在搭建一个采用jsf+spring+hibernate的架构,该系统考虑采用DDD方法。苦于对DDD方法和对设计思想的理解不深,不能保证架构的合理性,请大侠们指点指点。

[该贴被admin于2008-09-22 11:29修改过]

              

banq
2006-09-19 20:04

如果考虑采用DDD方法,那么JSF的managed Bean和Spring的bean就应该是同一个类型 Domain Model。

DDD和架构关系是:

先有DDD,再根据DDD来选择架构,越靠近DDD的架构越好,目前靠近DDD的有RoR,当然不忘推销本人的JdonFramework,而Spring则不是一个DDD框架。

zxkr
2006-09-20 10:17

谢谢,banq大侠。

我原先是想采用DDD方法,把域模型建立起来,然后因为域模型里分层bean、service和dao,为了减少它们的耦合并且由于持久层使用hibernate,所以考虑采用spring的ioc和它对hibernate的封装。所以将domain model放置于spring 容器中。考虑到表现层和域模型的分离,因此在表现层加上delegate一层,以封装各种服务端提供的服务(如webservice/ejb/其他一般的服务),来构架基于soa的系统。也由于表现层考虑采用jsf所以需要manage bean,但大侠所说的将manage bean 和域模型里的bean合并,那岂不将服务层和表现层(更确切地说应该是控制层),所以这里我还是有些不懂?

banq
2006-09-20 18:08

》将manage bean 和域模型里的bean合并

做个继承也可以,实则是同一个,这样简单,不要系统间DTO到处乱飞,增加复杂性。

一般情况下只有Service被Spring纳入容器管理,Domain Model不受这个拘束的,同一个Model可以出现在界面,也可以出现在持久层,但是在代码阶段他们是分离的,而在运行阶段则是混合的。

代码阶段和运行阶段意义不一样,我们强调分层,分离,更多是代码阶段。

zxkr
2006-09-20 22:13

收获不少。

但如果只有service纳入spring管理的话,那也只能用到spring的事物管理和aop,至于它ioc和对hibernate支持的话就用不上了?

2Go 1 2 下一页