9

マイクロソフトの従業員によるこのテーマに関する記事を見つけましたが、これに対してより堅牢なフレームワークを実装した人はいますか?簡単に移植できるWinForms用の軽量フレームワークはありますか?私はかなり早くスピードを上げて、賢い人がすでにこれを行っているときにこれを処理するために自分のフレームワーク/ライブラリを作成することを避けたいと思います。

P&Pグループのモバイルソフトウェアファクトリーは見たことがありませんが、ちょっと重いのではないかと思います。一見の価値がありますか?

編集:ASP.NETMVCプロジェクトに関する情報を探していません。コンパクトフレームワークの「WinForms」の実装と、それを使用してMVCを実装する方法について質問しています。

4

7 に答える 7

5

個人的には、Mobile Software Factory は CF にとってあまり楽しいものではないと思います。私たちはまだその一部 (EventBroker) を使用しており、可能であればその部分を削除したいと考えています (一般的なイベントをサポートしておらず、引数を EventArgs から強い型にキャストする必要があるため)。仕事中の姉妹プロジェクトは、UI の一部にそれを使用していましたが、パフォーマンスの問題のために取り除かなければなりませんでした (別の大きなプロジェクトですが、それ自体にもパフォーマンスの問題があります)。

P&P lib が提供する MVP フレームワークで私が見つけた問題は、フォームを所有するプレゼンター/コントローラーではなく、フォームとコントロールがプレゼンターを所有していることです (「それは単なるビューです」を読んでいない人: Pragmatic Programmer?)。これは、MS の "フォーム ファースト" 迅速なアプリケーション開発のマントラに見事に適合しますが、CE でウィンドウ ハンドルがどれほど高価になる可能性があるかを考えると (多数のウィンドウがある場合)、残念です。非常に大規模な CF アプリケーションを実行しており、独自の MVC フレームワークを展開しています。独自のものを展開するのは難しくありません。すべてをコントローラー、ビュー、ビジネス オブジェクト、およびサービスに分離し、コントローラー間の相互作用を制御する UIController を用意してください。

実際にはさらに一歩進んで、Controller->View->Layout パターンを使用してフォーム/コントロールを再利用します。コントローラーは通常と同じで、ビューはレイアウトを特定のビューにカスタマイズするオブジェクトであり、レイアウトは実際の UserControl です。次に、これらを 1 つの Form で入れ替えます。これにより、使用する Windows コントロールの量が大幅に削減されます。この + 起動時にすべてのフォームを初期化するということは、新しい Windows コントロールを「オンデマンド」で作成するときに発生する顕著な一時停止をなくすことを意味します。

明らかに、大規模なアプリケーションを展開している場合にのみ、この種のことを実行するだけで十分です。およそ 20 種類以上のビューがあり、合計で約 7 種類のレイアウトを使用しています。これは初期化ルーチン (起動時にフォームをロードするため) に約 10 秒の損害を与えますが、心理的にはほとんどのユーザーは、実行時の顕著な一時停止とは対照的に、起動時のこのようなヒットを喜んで受け入れます。

私の本での P&P ライブラリの主な問題は、それが FF -> CF ポートであり、2 つのプラットフォーム間の特定の非互換性とパフォーマンスの違いにより、多くの便利な機能が失われることです。

ところで、これは私が今まで読んだ MVC/MVP に関する最も包括的な記事です。Windows アプリケーション (デスクトップまたは CE) の場合、Taligent Model-View-Presenter バージョンを対話、コマンド、および選択なしで使用することをお勧めします (たとえば、コントローラー/プレゼンターがすべての作業を実行します)。

于 2008-08-25T17:11:13.143 に答える
3

あなた (davidg または Kevin Pang) のどちらも、彼がWeb FormsではなくWinFormsに興味を持っているという事実に注意を払いませんでした。彼は、.NET Compact Framework を使用する WinForms プロジェクトで Model-View-Controller デザイン パターン (davidg、MVC は単なる ASP.NET フレームワークの名前ではありません) をプッシュするフレームワークを望んでいます。彼はうまく質問した。

于 2008-08-25T16:58:07.200 に答える
2

OpenNETCF IoCフレームワーク(この質問が出されたときには存在しなかったと思います)もあります。これははるかに軽量ですが、オブジェクトモデルはP&Pのモバイルソフトウェアファクトリーに似ています。

于 2010-11-18T13:53:44.193 に答える
1

@DavidG と @KevenPang

MVC は Web テクノロジに限定されません。実際、元の smalltalk MVC はデスクトップ アプリケーション用でした。

それはこのように動作します:

  • ビュー = クライアント フォーム
  • コントローラー = ビューとモデルの間でクライアント イベントとマーシャリングをまとめる
  • モデル = アプリケーション データとビジネス ロジック

純粋な Smalltalk MVC では、ビューはフォームに限定されず、モデル データの任意の表現にすることができます...たとえば、スプレッドシートを表すモデルがある場合、次のビューを持つことができます。

  • スプレッドシート ビュー
  • 印刷用ビュー
  • アイコン表示

など、モデルは同じですが、ビューはそれぞれの場合に異なる出力オブジェクトを作成します。

とはいえ、.NET Compact フレームワークにそのようなフレームワークが存在するかどうかはわかりませんが、MVC は WebApp を意味するものではないことを指摘したかっただけです。

于 2008-08-25T17:00:28.317 に答える
0

mFly の Mobile MVCをご覧ください。使ったことはありませんが、CF の妥当な MVC フレームワークとして売り込まれています。

于 2008-10-30T23:23:19.397 に答える
0

@davidg: 「Compact Framework で MVC が必要な理由は何ですか?」

なぜだめですか?Web開発用に予約されているわけではなく、パターンです。

于 2008-11-10T06:58:35.353 に答える
-6

編集:上記のポスターは正しいです。私はMVCを見て、すぐにWebフォームについて考えました。謝罪いたします。これは無視してかまいません。WebフォームMVCに関心のある人リンクを必要とする場合に備えて、元のメッセージをそのままにしておきます。:-)

そこにはいくつかのMVCフレームワークがあり、どちらも非常に「軽量」ではありませんが、MVCはWebフォームからかなり大きくシフトしているため、次のことが予想されます。

  • ASP.NETMVC-これは、MVCフレームワークに対するMicrosoftの試みです。まだプレビューモードなので、ご自身の判断で使用してください。ただし、すでに実稼働アプリケーションで使用している人もいます。.NETの群衆の間で非常に人気が高まっているため、簡単なGoogle検索でこれに関する十分なドキュメントを見つけることができます。
  • Castle MonoRail -MonoRailフレームワークはオープンソースのMVCフレームワークであり、かなり前から存在しており、いくつかの本番アプリケーションで使用されています。間違いなくASP.NETMVCフレームワークよりもフラッシュアウトされていますが、MicrosoftがMVC製品に注いでいる努力の量を考えると、比較的すぐに変わると思います。
于 2008-08-25T16:44:28.730 に答える