浏览 2175 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-17
在创建(create)记录时,需要保存(save)到本地数据库中,同时需要通过JMS发送给JMS的接收方。使用何种模式! 个人认为: save to local save to jms 是二种服务,应当定义二种service,在Action中分别调用。 而我们DM(Department Manager)坚持认为,应当在一个service中实现。即在service的save()方法中,不仅保存到本地,同时JMS发送。 个人认为DM的方法不符合软件设计的模式,serivce是提供给外部使用的接口,功能应当单一,对于组合的功能,应当通过在action中调用或者是通过切面设计的原则来实现。 现在在进行权限检查或者日志记录等方面时,大部分的设计都是通过对于service进行拦截的方式来实现。(偶DM不是通过这种方法实现,而是通过在Struts的execute()方法中调用来实现。DM原来是做ASP,DOMINO开发的)。 大家热情讨论一下。 谢谢! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-10-17
说真的,我不认为这是个问题,一开始不妨听从DM的意见,写在一个service里,如果通过JMS发送这个功能在很多地方用到,那么通过extract method、move重构一下也是举手之劳。
|
|
返回顶楼 | |
发表时间:2007-10-17
考虑事务性,你dm的做法不无道理
|
|
返回顶楼 | |
发表时间:2007-10-17
DM应该是有预见性的认为, 大部分业务操作都是要保存到本地,同时JMS发送.
这可以说是一种粒度适当的操作. 但是, 程序编码时, 是否易于扩展, 就要看楼主的了! |
|
返回顶楼 | |
发表时间:2007-10-18
Re dennis_zane、hamlet、galaxystar:
不知道大家看明白没有,还是偶没有表述清楚,偶的意思是二种业务,应当提供二个Service来实现,至于通过JMS发送,完全可以通过aspectJ或者spring的拦截来实现。 这种jms的业务应当是易于配置。 |
|
返回顶楼 | |
发表时间:2007-10-18
这种应用场景我觉得应该使用粗粒度的Service,调用者不需要去关心你是保存到Local,还是JMS还是其他。
|
|
返回顶楼 | |
发表时间:2007-10-18
Re 惊鸿逝水 :
大家可能还是没有明白偶的意思,偶的意思是分成二个Service,可以通过配置的方式,或者说是加载aspectJ拦截的方式来实现,就像是大家记录日志,总不会说在service都加上吧。 |
|
返回顶楼 | |