2012-08-24 13 views
7

Sto cercando di decidere, in base alle best practice di Grails e ai pattern MVC, quando è il momento giusto per introdurre un servizio e non tenere controllori all'ingrassamento. Trovo che sia in qualche modo in conflitto, quello che ho letto sulle migliori pratiche e ciò che sembra essere una pratica comune, quindi mi piacerebbe sentire cosa pensano gli altri di questo.Non dovrebbero Grails chiamate GORM essere nel servizio e non nel livello controller?

Con le chiamate GORM in mente, mi sarei aspettato che qualsiasi cosa avesse a che fare con GORM avrebbe dovuto davvero entrare in un servizio. Anche se non lo pratico personalmente, specialmente quando scrivo metodi di controllo molto semplici come show che eseguono semplicemente un get() su una classe di dominio e quindi eseguiamo il rendering di una vista per mostrare i dettagli dell'oggetto recuperato.

Tuttavia, dopo aver seguito libri come "Codice pulito" e libri simili, il codice ben gestito dovrebbe essere coeso e i metodi dovrebbero idealmente eseguire solo una singola attività. Quindi, nel mondo perfetto, il metodo show in un controller dovrebbe essere responsabile solo della determinazione dell'oggetto da visualizzare prima di visualizzare una vista? Il recupero dal database potrebbe andare in un metodo nel database che è l'unica attività da recuperare dal DB e lanciare un'eccezione se non trovata ecc.

Ma sì, questo sembra un po 'eccessivo.

Quindi, facendo un passo ulteriore, i metodi create() o update(). Ancora una volta il codice generato da Grails mette tutto nel controller, nessun uso di un servizio.

Quindi quando sarebbe il punto raccomandato che abbiamo bisogno di utilizzare un servizio? È solo quando qualcosa di transazionale deve avvenire, ad esempio, su una chiamata create(), potremmo anche voler scrivere un record in un file di registro per mantenere un registro di controllo di sorta. Sicuramente questo garantisce un servizio?

Mi piacerebbe sentire quello che gli altri ritengono sia il momento giusto per presentare i servizi, immagino che differisca molto da persona a persona.

risposta

3

stiamo creando metodi statici della classe di dominio per incapsulare query. Il servizio viene utilizzato solo per operazioni transazionali o query molto complesse con interazione di più domini. I controllori chiamano semplicemente domini o metodi di servizio.

+0

Grazie per il tuo contributo – Dave

Problemi correlati