Grails GORM调用不应该在服务而不是控制器层吗?

Dav*_*own 8 grails

根据Grails的最佳实践和MVC模式,我正在尝试确定何时是引入服务的正确时间而不是保持控制器的增长.我发现它有些矛盾,我读到的最佳实践以及看似常见的做法,所以很想听听其他人对此的看法.

考虑到GORM调用,我原本以为与GORM有关的任何事情应该真正进入服务.虽然我自己也没有这样做,特别是在编写非常基本的控制器方法时show,只需get()在域类上执行一个然后渲染视图以显示检索到的对象的详细信息.

但是,在遵循"清洁代码"等书籍和类似书籍之后,维护良好的代码应该具有凝聚力,理想情况下,方法应该只执行一项任务.那么在完美的世界中,控制器中的show方法是否只负责在渲染视图之前确定要显示的对象?从数据库中检索可以进入数据库中的一个方法,该方法的唯一任务是从数据库中检索并在未找到时抛出异常等.

但是,是的,这看起来有点矫枉过正.

所以采取更进一步的步骤,create()update()方法.目前,Grails生成的代码再次将所有内容都放入控制器中,根本不使用任何服务.

那么,建议的时间点何时我们需要使用服务?只有当事务必须发生时,例如,在create()调用时,我们可能还想将记录写入日志文件以保持审计日志的排序.当然这需要服务吗?

我很想听听别人觉得是什么时候介绍服务的正确时间,我想这个人与人之间差别很大.