@ledsun blog

無味の味は佳境に入らざればすなわち知れず

クライアントMVCとWebMVCは何が違いますか?

主な違いは三つ

クライアントMVCWebMVC
コントローラーがたくさんコントローラーが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に反映されるでしょう。