Estoy tratando de decidir, de acuerdo con las mejores prácticas de Grails y los patrones de MVC, cuándo es el momento correcto para presentar un Servicio y no mantener los controladores de engorde. Encuentro algo conflictivo, lo que he leído sobre las mejores prácticas y lo que parece ser una práctica común, por lo que me encantaría escuchar lo que otros piensan sobre esto.¿No deberían las llamadas Grails GORM estar en el servicio y no en la capa de controlador?
Con las llamadas a GORM en mente, hubiera esperado que todo lo que tuviera que ver con GORM realmente entrara en un servicio. Aunque no lo practico yo mismo, especialmente al escribir métodos de control muy básicos como show
que simplemente realizan un get()
en una clase de dominio y luego muestran una vista para mostrar los detalles del objeto recuperado.
Sin embargo, después de seguir libros como 'Código limpio' y libros similares, el código bien mantenido debe ser coherente y los métodos idealmente deberían realizar solo una tarea. Entonces, en el mundo perfecto, ¿el método show en un controlador sería responsable solo de determinar el objeto a mostrar antes de renderizar una vista? La recuperación de la base de datos podría entrar en un método en la base de datos cuya única tarea es recuperar desde el DB y lanzar una excepción si no se encuentra, etc.
Pero sí, esto parece algo exagerado.
Así que dar un paso más, los métodos create()
o update()
. De nuevo, actualmente el código generado de Grails lo coloca todo en el controlador, sin uso de ningún servicio.
Entonces, ¿cuándo sería el punto recomendado que necesitamos usar un servicio? Es solo cuando algo transaccional debe tener lugar, por ejemplo, en una llamada create()
, también podemos escribir un registro en un archivo de registro para mantener un registro de auditoría de clases. Sin duda, esto garantiza un servicio?
Me encantaría escuchar lo que otros sienten es el momento adecuado para presentar los servicios, me imagino que difiere mucho de persona a persona.
Gracias por su entrada – Dave
no hay problema;) espero que ayude –