2012-08-24 4 views
7

GrailsのベストプラクティスとMVCパターンによれば、いつサービスを導入し、肥満コントローラを保持しないようにするべきなのかを判断しようとしています。私はそれがやや矛盾していること、ベストプラクティスについて読んだこと、そして一般的なプラクティスであると思われるものを見つけました。GrailsのGORM呼び出しはコントローラ層ではなくサービス内にあるべきですか?

GORMを念頭に置いて、私はGORMと何かが本当にサービスに入るはずだと思っていました。私はこれを練習しませんが、具体的にはshowのような非常に基本的なコントローラーメソッドを作成し、ドメインクラスでget()を実行してから、検索したオブジェクトの詳細を表示するビューをレンダリングするときは、

しかし、「クリーンコード」やそれに類する本のような本を読んだ後は、よく整備されたコードをまとめるべきであり、メソッドは理想的には単一のタスクしか実行してはいけません。したがって、完璧な世界では、コントローラ内のshowメソッドは、ビューをレンダリングする前に表示するオブジェクトを決定する責任がありますか?データベースからの検索は、DBから取り出して例外がスローされるなどの唯一のタスクであるデータベース内のメソッドに入る可能性があります。

はい、これは多少過度のようです。

手順をもう少し進んで、create()またはupdate()の方法を使用してください。ここでも、Grailsの生成コードはすべてをコントローラに入れ、サービスを全く使用しません。

したがって、サービスを利用する必要があるのはいつですか?たとえば、create()コールで何らかのトランザクションを実行する必要がある場合のみ、ログファイルにレコードを書き込んで、並べ替えの監査ログを保持することもできます。確かにこれはサービスを保証しますか?

私は、他の人がサービスを導入する正しい時期であると感じていることを聞きたいのですが、人と人が大きく異なると思います。

答えて

3

私たちは、クエリをカプセル化するために、ドメインクラスの静的メソッドを作成しています。サービスは、トランザクション操作や、複数のドメインが相互作用する非常に複雑なクエリに対してのみ使用されます。コントローラは単にドメインまたはサービスメソッドを呼び出します。

+0

あなたのご意見ありがとうございます – Dave

関連する問題