Service层的上面,是不是还应该有一层处理逻辑的东西?
实践中,用spring管理的ssh架构都是action——service——Dao——数据库这样的层次结构,一般来说,事务控制都编织在service层上。并且大部分文章都说service是用来处理业务逻辑的。但是实际实践中,我觉得,似乎service层并不能涵盖所有的业务逻辑。比如下面这个场景。服务器有一个自动注册功能,客户发送请求,由服务器随机生成账号并插入数据库,因为同时可能有多个请求,造成随机用户名撞车的现象,因此用于注册的service层是可能抛异常的,而我们知道service层内部是不应该捕获异常的否则会影响到事务回滚,那么try catch这部分代价就会放到service层之外,也就是action层中,在action层中生成随机用户名,调用service插入数据库,如果插入失败(异常),则生成新的随机用户名继续尝试插入,直到成功。但是这样,等于一部分逻辑代码移动到了action中,这是合理的吗?action不应该是纯表现层吗?有时候客户端发来的请求是不涉及数据库的,但是要涉及到服务器计算,这些放在service我觉得就不是很合适啊,是不是说action和service之间还应该有一层呢,请教各位?