主な違いは三つ
クライアントMVC | WebMVC |
---|---|
コントローラーがたくさん | コントローラーが1つ |
Viewが状態を持つ | Viewは状態を持たない |
ModelからViewへの呼び出し・変更通知がある | ModelはViewを呼び出さない |
コントローラーの数
WebMVCではユーザ入力は必ずHTTPリクエストの1つしかありません。 そのため入力に対応するコントローラーも1つです。
クライアントMVCではコンポーネントごとに入力があり、入力を担当するコントローラーもそれぞれに持ちます。 例えばペイントアプリケーションのメニューバーのアイコンクリックとエディット領域のマウスクリックをそれぞれのコントローラーで処理します。
Viewの状態
WebMVCではViewはリクエストの度に生成されるため状態を持ちません。 Cookieはアプリケーションにとっては状態ですが、Viewにとっては入力パラメーターの1つです。
クライアントMVCではViewはアプリケーション起動時からずっと存在しています。 例えばダイアログは表示/非表示状態を持ちますが、その状態は他のコンポーネントにもModelにも反映されません。
ModelからViewへの通知
WebMVCではViewはリクエストの度に生成されるため、毎回最新のModelを参照します。 Modelの変更を通知する必要がありません。
クライアントMVCでは他のコンポーネントの操作によってModelを変更されることがあります。 例えば戻るボタンをクリックしたらModelが修正され、その後Viewに反映されるでしょう。