Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

MVCに追加する層の「サービス層」に代わる名前を考える

MVCにサービス層を追加することを推奨する意見が散見されます。

テストが容易な MVC: テストが容易な ASP.NET MVC アプリケーションを構築する

サービス層は、アプリケーションのドメイン モデルの最上部に位置し、アプリケーションに対して実行できる一連の操作を提供します。このため、アプリケーション内には含まれていてもドメイン モデル内には含まれないロジック、つまりコントローラーのメソッドに影響を及ぼす可能性があるロジックを、サービス層に一元化できます。

サービス層の役割は例えば以下のようなことが挙げられるでしょう。

  • 1つあるいは複数のモデルの機能を組み合わせてシンプルなAPIを提供すること。
  • DBMSへの接続やトランザクションを管理すること。

サービス層の存在に異存はありません。でも層の名前は本当に「サービス」が妥当でしょうか?

「サービス」という名前は、意味が広範であり、様々なコンテキストで使われます。例えば、Webサービス、WCFサービス、Windowsサービスなどが挙げられます。そのため誤解を生む原因になりかねないと思うのです。

「サービス層」に代わる名前として「ファサード層」というのはどうでしょう?機能の窓口であることが強調されるので望ましいと思うのですが。