質問: 「やはりお前らのMVCは間違っている(https://www.slideshare.net/MugeSo/mvc-14469802)」という 記事を拝見したのですが、いまいち噛み砕けないので、私が今勉強用で作っているツールに当てはめて ご説明いただきたいです。。。 ※説明不足が多いと思いますので、ご指摘頂けましたら追記していこうと思います。 【作成中ツール】 ○機能 →アップロードしたファイルを、DBに登録した内容を元にファイル内容を置換して、新規ファイルとしてダウンロードさせる ○構成 ASP.NET MVC5 Visual Studio 2017 community entity fremworkを用いて、コードファーストでDBを作成 sql server 2016 ○現状のコーディング ・モデル →コードファーストで作成したDB用のモデル(置換IDと置換内容をプロパティで持っている)とdbContext ・ビュー →モデルの置換内容を表示、inputタグのfileでファイルをアップロード ・コントローラー →アップロードしたファイルを引数でビューから取得、 DB(モデル)から置換ID、内容を受け取り、ファイル内容を置換してダウンロードさせる 今の所、ほとんどの作業がコントローラーで行われておりモデルはデータ置き場的な状態になっているのですが、 どうやって作業を割り振れば良いでしょうか。 アドバイスよろしくお願いいたしますm(_ _)m
回答: Modelの設計をどうすればいいのか悩んでいるように感じられました。 私がよく使う説明は、Modelはオブジェクト指向で設計した際の「モデリングの成果物」というものです。 まずはシステム化とか考えずに、ドメイン(現実の業務)をオブジェクトで定義することからはじめてみてください。 そうすると、「DBに登録した内容を元にファイル内容を置換する」というものがモデルの候補になるのがわかります。 それをConverterオブジェクトとすると、 output = Converter.doConvert(input) のような感じで書けます。 Viewは、outputを表示する部分で、Controllerは、ファイルをViewから受け取って上記メソッドを呼び出す部分となります。Modelは、Converterオブジェクト自身です。 少々古いですが、以下の私の記事も参考にしてください。 【雑記】 そろそろMVCモデルについて一言いっておくか