>我这里指的不光是httpsession,当然web应用对应的是httpsession,对于桌面应用没有httpsession,换一种存储方式。
你非要追求Service的形式,其实很多业务的东西还在Action
>不是很明白呵呵。界面上的东西还是先传递给Action的,然后Action把界面上获得的数据还有session之类的数据打包传递给service,最后根据service处理结果返回界面,就不干别的了,这里面有多余的吗?还是说有不够的?
如果对于web应用,有部分业务数据保存在了httpsession中,然后传入service(当然不是直接把httpsession形式的变量传过去,而是包装成一个sessionMap或者一个sessionContext之类的),但是对于service是不知道这是个httpsession,还是个别的,只知道这是个Map/Context(对于service获得的sessionMap/sessionContext不一定就是httpsession),这样对于web应用切换到桌面应用,只不过action层把传过去的sessionMap/sessionContext变了,而service层不变。
要么你把业务数据移动到Service,要么就还在Action中处理。
>我就是想把业务数据移动到service处理
不知道把自己的意图讲明白没有,谢谢,麻烦再帮忙分析下。
[该贴被confuse于2009-03-31 09:43修改过]
第一,本贴讨论的session不是httpsession,用jdon的观念来讲应该算是业务层session,当web应用的时候,jdon好像是以httpsession作为业务session的容器。但是,你也可以改变,用别的东西作为容器(桌面应用情况应该会用别的)。
第二,存取业务层session操作自然属于业务逻辑处理,所以自然放在service层。e.g.:往一个购物车里面加入产品。jivejdon中的业务层session应该是sessionContext,在ForumMessageShell等service类中显式的调用sessionContextUtil方法取得sessionContext中的数据。e.g.:"com.jdon.jivejdon.model.Account account = sessionContextUtil.getLoginAccount(sessionContext);".(此处sessionContext对象是被别的模块直接注入到service类中的)
感觉对业务层session的存取操作和对数据库的存取操作还是有相似之处的,都有点仓储的概念,对业务session存取的实现放在基础设施层,在领域层间接的,仅仅委派基础设施层的方法来获得sessionContext所存储的东西,这样做如何?当然这些操作本身肯定不是业务的核心操作,只是有点仓储的意思。我接触DDD甚少,所以希望大侠门指导下,有理解完全不靠谱的希望指出,谢谢!
最后想问下,像jivejdon这种service类中直接处理sessionContext的方式是不是比较不错呢?我个人感觉是没有什末不好的。
[该贴被confuse于2009-04-21 14:52修改过]