1. ホーム
  2. .net

[解決済み] WindowsフォームでMVCを実装する

2022-11-08 18:56:32

質問

Windows FormsでMVCパターンを完全に実装するための良い例はどこにありますか?

私はさまざまなサイトで多くのチュートリアルやコード例を見つけました(例えば。 コードプロジェクト や .NetHeaven など) がありますが、多くは MVC よりも observer パターンの方が代表的です。私が開発したいアプリケーションは学校のプロジェクト用なので、次のようなフレームワークを使用することに抵抗があります。 PureMVC MVC# .

どのように解決するのですか?

私は、アプリケーションは互いに非常に異なっており、アプリケーションがどのように書かれるべきかについての我々の理解はまだ非常に限られているという見解を持っています。 私が携わってきた過去の Windows Forms アプリケーションは、それぞれ非常に異なっていました。私が見てきたデザインの違いのいくつかは、次のとおりです (ほとんどの組み合わせを含みます)。

  • データベースと直接対話する (2 階建て)
  • 与えられたアプリケーションのために書かれたバックエンドを使用する (3層)
  • 多くのアプリケーションで使用するために書かれ、アプリケーションのために変更することができないWebサービスのセットを使用します。(サービス指向アーキテクチャ)
  • 更新が行われるのは CRUD 操作で行われます。
  • で行われている更新は コマンドパターン (バックエンドサーバへのコマンド送信)
  • 多くの データバインディング / データバインディングの使用なし
  • ほとんどのデータは、標準のグリッドコントロールでうまく動作する "テーブルのような"(例:請求書)である/ UIデータのほとんどのためのカスタムコントロールが必要です。
  • 一人の開発者 / 10人または20人の開発者チーム (UIのみ)
  • モックなどによるユニットテストが多い / ユニットテストがない

したがって、常にうまくフィットするMVC(またはMVP)の実装を1つ作ることは不可能だと思うのです。

私が見た中で最高の投稿は、本当に を説明する MVCと なぜ は、MVCシステムがそのように構築されているのか、それは Jeremy D Miller 氏による "Build Your Own CAB" シリーズです。 . このシリーズに取り組んだ後は、自分の選択肢をよりよく理解できるようになるはずです。 Microsoft のスマート クライアント ガイダンス (CAB / Microsoft Composite Application Block) も検討すべきです。これは少し複雑ですが、うまく適合するアプリケーションではうまく機能します。

を選択する WinformsプロジェクトでのMVC/MVPの実装 は、読む価値のある概観を与えてくれます。多くの人が PureMVC . 私は使ったことがありませんが、次にMVCフレームワークが必要になったら見てみようと思います。

" 最初にプレゼンター は、MVP (Model View Presenter) デザインパターンと テスト駆動開発 . これは、顧客の言語でテストを書くことから始めることができます。例えば

"「保存」ボタンをクリックすると ファイルが保存され 未保存ファイルの警告が消えるはずです。 消えます。"

Presenter Firstの使用経験はありませんが、非常に期待できそうなので、機会があれば試してみたいと思います。

Stack Overflow の他の質問も見てみるといいかもしれません。 はこちらです。 はこちら .

もし、あなたが WPF を使おうと思っているのなら モデル・ビュー・ビューモデル(MVVM) パターンを見てください。とても良いビデオがありますので、ご覧になってみてください。 Jason Dolinger、モデル-ビュー-ビューモデルについて .

WinformsのMVVM(モデル・ビュー・ビューモデル)デザインパターン は、必要に応じて WPF への変換を容易にする別の選択肢を提供します。 マジカル・トレバー は Windows Forms 用のもうひとつの MVVM サンプルで、プロパティ名に基づく自動バインディングも含まれています。


また、自分自身に問いかけてみてください なぜ を考えてみてください。

  • できるだけ多くのコードをユニットテストできるようにしたいですか?
  • できるだけ多くのコードを再利用できるようにしたいですか?
  • コードベースをわかりやすくしようとしていますか?
  • その他、あるプロジェクトで有効な 101 の理由があります。

をはっきりさせたら の目標 を明確にすれば、1つの実装を選択することが容易になります。