DDD,SSH...希望bang和各位高手指正我的理解误区?

一直也对JAVA EE层次架构非常感兴趣,用SSH开发居多,对于DDD的概念,真的没有听说过,看了大家很多的文章,也看不明白,或者真的要静下心来,买本书来好好学习学习。
我的理解是分层的层次有:表示层+业务逻辑层+数据库访问层, 表示层对于于MVC模型,struts1.x中的JSP相当于视图,action相对于控制器,至于model(模型)是要我们自己去实现,业务逻辑层,我们一般都设计业务逻辑接口,然后在action里面调用业务逻辑接口就行,
问题一:是不是业务逻辑接口就是大家说的service层?
在业务逻辑实现类里面写上我们具体的业务逻辑,数据库访问层我们有抽象除了DAO层,因为这样我们可以灵活的实现持久化方式,采用hibernate实现或者jdbc实现都可以;写好了我们的DAO实现类,然后在我们业务逻辑接口实现类里面调用DAO的相关方法即可,至于model,我们是始终贯穿于整个层次的。对于在action里面注入我们的业务逻辑接口实现类,和在业务逻辑实现类里面注入我们的DAO实现类,我们都是通过spring的IOC机制来实现,spring是针对接口编程的,针对接口编程,我们可以很好的利用JAVA动态代理机制,可以很好的利用AOP机制,可以方便的配置事务管理器,这是我的理解,但是
问题二:spring是封装业务逻辑的?这话什么意思,难道是说,他管理了struts和hibernate,配置各个接口的依赖关系,才说他是业务逻辑层?
这两个问题希望bang和高手们给我提供点思路,同时指正我的一些错误的观点。
问题三:大家所说的DDD有是一个什么的框架概念或者一个层次概念,对于与我上面的理解,有什么不同之处,SSH架构实现了ddd的层次概念了吗?

注:希望大家能够答复于我,谢谢各位了!

[该贴被admin于2009-04-20 08:50修改过]

SSH只是实现了DDD初步分层架构,但不完全,所以,使用SSH编程,不学习DDD,就会将业务逻辑写到service等去,因为业务层按照DDD划分是有领域层和应用层。

很多人学习SSH Spring这些框架,但是不懂SSH/Spring的源泉或指导思想,那么就会误用,学习次序正好倒过来了。

>就会将业务逻辑写到service等去
service不就是业务逻辑层吗?怎么不能把业务逻辑写到service里面去呢?

>业务层按照DDD划分是有领域层和应用层。
好像很复杂....不理解

>service不就是业务逻辑层
完全错误 service只是业务逻辑层中一部分,只是对客户端的一个接口,就象皮肤是人体与外界接触层一样。

也象你去加油站加油,加油服务是从加油者角度看的一个接口,实际上,加油服务后面包括很多内容,需要运油,需要计价器 需要人员管理和成本,如果将这些都放在单一的service这个接口性质中,那么无疑是对OO缺乏了解。

所以,无论使用什么框架,首先掌握好OO,这是基础。如果你只会数据库 算法,那么拿了SSH这些框架,你就会按照面向数据库编程来编,将对象看成数据的容器,将功能都在service中实现,这是打着OO旗帜的假OO,实际是面向过程编程,可悲的是很多人不知道,以为软件就是这样,变成常识了。

可以简单理解为:service是一个业务对象协同完成某一接口任务的场所吗?
意思是将业务流程里的工作步骤细化,分发给不同的对象,再把这些对象注入或者被引用到service里面,在某个sercie接口中完成这个接口的任务?

2009年12月08日 17:57 "levincai"的内容
可以简单理解为:service是一个业务对象协同完成某一接口任务的场所吗?
意思是将业务流程里的工作步骤细化,分发给不同的对象,再把这些对象注入或者被引用到service里面,在某个sercie接口中完成这个接口的任务?

服务有两个含义,一个是SOA服务,一个是DDD中服务,SOA中服务是用来整合业务流程,粒度很大,就是整合不同子系统模块的,比如引入工作流 JBPM等等,向外暴露服务;DDD的服务是细粒度的,是将一些不能放入实体的行为放在这里,可能横跨实体行为,不属于实体基本逻辑行为等等。

你说的业务对象我理解为实体,你说的"业务流程里的工作步骤细化",应该是SOA中的服务,SOA服务是将流程和业务对象分离,所以,在服务中整合的,相当于桥模式。

实体和领域服务关系,推荐使用Domain Events实现,不建议将领域服务注射到实体中:Domain Events – 救世主

不管哪种服务,都不能将全部业务逻辑写到服务中,造成失血贫血模模型,实际就是过程化编程。
[该贴被banq于2009-12-08 18:12修改过]

2009年12月08日 17:57 "levincai"的内容
>service不就是业务逻辑层
完全错误 service只是业务逻辑层中一部分,只是对客户端的一个接口,就象皮肤是人体与外界接触层一样。 ...

banq老师说的service是指的web service服务吗,我们三层架构里的业务逻辑层,也叫service层呀,看来service这东西在不同人的眼里是不同的东西,如果不把它规范起来,沟通是很困难的哦...

三层架构···是模型层吧,模型(实体)包括业务逻辑而已,若果service=业务逻辑,则领域服务到哪了。正因为MVC没细分M层,所以DDD就将其重新描述出来。