MVCを破る方法:
- コントローラーがアプリケーションロジックを担当し、永続性さえも持つ可能性があります(モデルレイヤーとビューの状態を変更するだけである必要があります)
- モデルは単一のクラスではなく、異なる責任を持つ異なるクラスで構成されたレイヤーです(「ファイルモデル」または「学生モデル」はありません)
最良のシナリオでは、コントローラーはデータからのフィードバックを持たず、モデルレイヤーに渡されます(できれば、ドメインモデルレイヤーを使用してアプリケーションロジックを処理するサービスを介して)。
代わりに、ビューインスタンスは、ユーザーの応答のアセンブルを開始するときに、モデルの状態を(サービスを介して)チェックし、何かが変更されているかどうかを確認します。アップロードの場合、これは、ビューがアップロードの結果を検出し、データに基づいて応答方法を決定するポイントになります。通常、ファイルアップロードの場合、応答にはHTTPロケーションヘッダーのみが含まれます。
プロファイル履歴に基づいて、WebのコンテキストでMVCについて話していると想定しています。従来のMVCでは、ビューは、そこで使用されるオブザーバーパターンのために、モデルレイヤーの変更を明示的にチェックせずに認識していました。
ほとんどの場合、「アップロードコントローラ」がありますが、ドメインオブジェクトやストレージの抽象化と直接対話することはできません。代わりに、ユーザーの要求を受け取り、そこからデータを抽出して、必要な場所に渡します。
Webアプリケーションでは、「ユーザー」はWebブラウザーであり、それを操作する人ではないことに注意してください。