2011-01-24 3 views
1

WinformsコードをMVCパターンにリファクタリングしています。私はこれまでにこのパターンを使ったことがありません。C#MVCパターンヘルプ

明らかに、GUIはビューになり、コントローラはGUIとの任意のユーザーの対話によって呼び出される「中間層」になり、モデルは必要なタスクを実行し、状態の変化を表示します。

私の質問は、モデルでは、多数のクラスにまたがることができ、1つの「モデル」クラスに限定されないと仮定していますか?また、これらの3つのセクションはすべて同じアセンブリ内にありますか?

ありがとうございました。 Winformsのため

+3

なぜMVC for Winforms - なぜMVVMではないのですか? – stack72

+0

私はそれを聞いたことがない。私は今見上げるでしょう.....いいリンクがありますか?ありがとう。 –

答えて

3

私はMVCを示唆してwouldntは - idがMVVM

は、この記事では、Silverlightを言及したがMVVMパターンが一般的でありかつで指摘したようにWinformsの

に適用することができhttp://weblogs.asp.net/dwahlin/archive/2010/09/30/silverlight-sessions-coming-to-devconnections-las-vegas-november-1-4.aspx

このチュートリアルを試してみてください示唆Roger Lipscombe - MVPでも動作する可能性があります - これについては、http://davybrion.com/blog/2010/08/mvp-in-silverlightwpf-architectural-overview/の情報でこれを試してみてください。この光ではSilverlightに特有ですが、そのパターンとしては適応可能です。

+0

Winformsでは、データバインディングがWPFやSilverlightほど良くないので、Model-View-Presenter(MVP)がより多くなることがわかりました。しかしそれはちょうどセマンティクスだと思います。 –

+0

100%正解 - 私のMVP回答を更新してください。私はMVCが通常winformsのために働くのを見つけません。 – stack72

+0

ありがとう、それをチェックします。本当に良い読書のように見えるこのMartin Fowlerリンクを見つけましたか?http://martinfowler.com/eaaDev/uiArchs.html –

0

いいえ、mo delは1つのモデルクラスに限定されません。モデルでは、通常、データベースやその他のデータ関連のものを表します。コントローラはほとんどの動作を担当します。

はい、このコンポーネントはすべて1つのDLLに収められます。 MVCで常にコンパイルされるわけではないビューファイルのような他のファイルもたくさんあります(ただし、強制することはできます)。

2

はWinformsのために私はMVP(モデル/ビュー/プレゼンター)とMVCパターンについての学習をお勧めします。 MVVMはWPFで提供されるデータバインディングを利用していますが、Winformsはある程度バインディングをサポートしていますが、WPFアーキテクチャ/オブジェクトモデルと同じようにバインディング中心ではありません。

'Model'レイヤーは多くのクラスで構成できます。このレイヤー内のクラスをモデリングする際には、常に「Single Responsibility Principle」と他のSolid原理を使用します。

便利なリンク:

0

あなたがインターフェイスとして 'モデル' クラスを作りについて考えたいかもしれません。その後、特定のモデルすべてがそのインタフェースを実装しますが、一般的な方法(更新、削除など)を共有します。

これらは同じアセンブリで作成できます。あなたのフォルダ構造(厳密に)は、モデル/ビュー/コントローラの構造に従って、それぞれの下にコードファイルを配置する必要があります。

0

Winformsに適したMVPパターンを試してみる場合は、MVPアプリケーションを構築するためのフレームワークであるMVC#をチェックしてください。それは簡単で良い。

0

MVC/MVPパターンとデータバインディングを流暢なインターフェースで組み合わせるアプローチに興味があるかもしれません。 mvc and databinding, what is the best approach?

MVC、MVP、またはMVVMを使用している場合は、私の視点から見ると遠近問題です。彼らはすべてデータの抽象化、論理とデータの視覚化につながります。