ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

MVCにおけるコントローラーの土管化の問題とカオル姫方式の終焉について

2013-10-07 10:08:31 | Weblog
最近、MVCの構成をとる場合、例えば
  View      JSP
  コントローラー Struts2
  モデル     Beans、DAOなど

CakePHPだと
  Viewは、viewのフォルダになんとか.ctpでかくし
  コントローラーは、controllersのフォルダになんとかcontroller.phpでかくし
  モデルはmodelsのフォルダーに書かれる
ので、明確に分かれる。

このとき、最近出てきた傾向として、(とくにJavaのMVCの場合)コントローラーで
できるだけなにもしないで、土管化する方法がある。

つまり、
・モデル部分で検索した結果を、そのままセッションにいれる。

・画面では、モデル部分の検索結果を、セッションから取ってきて、
   いろいろ駆使して表示する

・画面入力内容をコントローラーで加工せず、そのまま、モデルにわたし
   モデルで画面データをもとにSQLを構築し、そのまま実行する

というかんじ。




 この方式に近いものとして、カオル姫方式というので、このブログに書いたものが
あると思う。
 セッションに全データを入れるというもの・・・

 しかし、この方式は昔は、成立したが、今は成立しない。
 最大の欠点がある。




 その後、クラウドが流行り、スケールアウトするようになった。
 そうすると、負荷分散が行われるようになり、セッションは、
セッション・イン・DBとか、(セッションに変えて)インメモリ方式などにより
かならずしも、Apache,Tomcatが用意したセッションを使わず、自分達で、管理
するようになってきた。

 そうすると、管理対象を絞りたい。
 コントローラーのみを管理対象とした場合、アクセスが絞れるので、やりやすい

 一方、たとえば、ビューでEL式を利用したJSPまでもOKとしてしまうと、
 EL式内で、自分達が管理しているセッションにアクセスしてくれているかどうか・・・
 というところまで考えないといけないので、めんどう。

 そこで、セッションに全部入れるのではなく、コントローラーで適切に処理して、
View側では、セッションにアクセスする必要性をなくすのが良いという考え方に
変わってきたと思う。




 つまり、セッションやDB、画面など、メディアの違いを吸収し、
 そのまま表示しやすいように加工するのが、コントローラーの役割であり、
 データをそのまま投げるのは、あまり良くないと思うんだが、

 これはあくまでも、個人的考えであり、
 時代の流れというのがあるから、どうなんだろう。。。

P.S わかりにくいですね。
 具体的に例をしめして、今度説明します。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする