July 03, 2008

MVCとか

ここ最近、開発以外のお仕事が増えています。

現在はIT技術者向けのテキストを作成する仕事をしています。

ある程度枠組みは決まっていて、それに沿って内容を書いていくのですが、
「MVCとは何か」
とか
「三層アーキテクチャとは何か」
というのを説明しようとするとなかなか難しいです。

Webアプリケーションの開発者なら誰もが知っている
ことだと思いますが、自分用にメモしておきます。

MVCというのはユーザインタフェースを伴うアプリケーションを
■Model
データとロジック

■View
見た目

■Controller
リクエストに応じた処理の割り振り

の3つの部分に分けて開発する手法です。
ここで重要なのはModelを他の部分に依存しないように設計することです。
そうすることによって、見た目を変更する、一つのデータに大して複数の画面を用意する、といったことが容易になるというメリットがあります。

Modelは他の部分に依存してはいけない、という原則はあるものの、MVCのそれぞれの役割については、フレームワークによって異なる場合もあります。

例えばRuby on Railsでは、
■Model
ActiveRecord:Baseクラスを継承したクラスのインスタンス

■View
rhtmlなど

■Controller
ApplicationControllerクラスを継承したクラスのインスタンス

と説明されることが多いのですが、これらのRailsでいうMVC役割は前述の本来のMVCの役割とは少し異なります。

たとえば、RailsではビジネスロジックをModelではなくControllerに記述します。(追記)
また本来のMVCでControllerの役割であったリクエストに応じた処理の割り振りについては、リクエストURLを解析し、該当するRailsのControllerインスタンスのメソッドを呼び出す、というところまではRails内蔵のルータが行い、そこから先の処理をControllerクラスに定義されたメソッドで行う、というように処理が分担されています。

つまりまとめると以下のようになるようです。
本来のModelRailsのModel
RailsのController
本来のViewRailsのView
本来のControllerRailsのRouter
RailsのController


Zope3だとビジネスロジックはAdapterに分離するので難しいのですが、
ModelContent component
Adapter(ビジネスロジック)
ViewZPT
Adapter(ビュー)
ControllerZope3 publisher
でしょうか。



matssaku at 02:40│Comments(0)TrackBack(0)clip!雑記 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔